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;} 
}