我正在使用EF6.2.0。
我需要在两个POCO类之间创建多对多关系,但是我需要针对链接添加自定义属性。 因此,我创建了此类作为我的许多链接POCO:
class SampleGroupSpecies
{
[Key, Column(Order = 0)]
public int GroupId { get; set; }
[Key, Column(Order = 1)]
public int SpeciesId { get; set; }
public bool IsContaminated { get; set; }
[Required]
public virtual Group Group { get; set; }
[Required]
public virtual Species Species { get; set; }
}
但是,当EF生成表格时,我得到了:
dbo.SampleGroupSpecies
Columns
GroupId (PK, FK, int, not null)
SpeciesId (PK, int, not null)
IsContaminated (bit, not null)
Species_Id (FK, int, not null)
如您所见,它正在创建自己的“ Species_Id”列,并将其用作外键,但这不是我想要的。
我可以很显然添加一个GroupSpeciesId
列,将其设置为唯一的[key]
,这一切都可以像魔术一样工作,但这并不是很好的设计。 / p>
我试图避免使用流利语言,并尽可能使用注释。
有人告诉我我哪里出错了:)
答案 0 :(得分:1)
这是由于我在Species POCO上错误地设置了导航属性而引起的-并没有将其设置为SampleGroupSpecies的集合,而是将其设置为一个-意味着EF正确地尝试创建一对多关系,但是我正在尝试迫使它无法创建多对多时:)
解决方案是检查两个相关的POCO,以确保将其导航属性设置为集合,而不是单个实例。