2

使用實體框架4.1試圖讓整數集合得到一個ICollection的 實體框架從映射器

基本上我有一個實體,稱爲規格

public class Spec { 
    public int Id{get;set;} 
    public string Name {get;set;} 
    public ICollection<int> TypeIds {get;set;} 
} 

表規格有列編號,姓名等等,我試圖映射與列規範ID TYPEID TypeIds表SpecTypes,我想不通的映射它

我已經追平這樣的事情

modelBuilder.Entity<Spec>().HasMany(r => r.TypesIds) 
     .WithMany() 
     .Map(m => m.ToTable("SpecTypes") 
      .MapLeftKey("SpecId") 
      .MapRightKey("TypeId")); 
+0

目前EF不支持原始類型和複雜類型的集合。不幸的是,只有實體的集合才被支持。 – hival 2012-02-07 09:00:32

回答

1

我不認爲你可以有一個導航屬性的原始值的集合。我認爲你只需要創建一個包含Id屬性的實體並擁有這些屬性的集合。所以你可能會有或多或少的像這樣:

public class Spec { 
    public int Id{get;set;} 
    public string Name {get;set;} 
    public ICollection<TypeEntity> TypeIds {get;set;} 
} 

public class TypeEntity { 
    public int Id {get;set;} 
} 
1

根據你所描述的,你可能想要做這樣的一對多關係。您通常只需要使用modelbuilder來解決一些複雜的映射,而您在類定義中無法做到這一點。

public class Spec { 
    public int Id{get;set;} 
    public string Name {get;set;} 
    public SpecType SpecType {get;set;} 
} 


public class SpecType { 
    public int Id{get;set;} 
    public ICollection<Spec> Specs {get;set;} 
}