这里有一个有趣的位,我以前没有遇到过。我们使用注释手动创建在EF6一个多一对多的关系:不再赘述EF6中的多对多实体
public class User
{
public int Id { get; set; }
}
public class School
{
public int Id { get; set; }
}
public class UserSchool
{
[Key]
[Column(Order = 1)]
public int UserId { get; set; }
[Key]
[Column(Order = 2)]
public int SchoolId { get; set; }
[Required]
public virtual User User { get; set; }
[Required]
public virtual School School { get; set; }
}
(其它附加的属性 - 我只想说,我们对结表的附加属性,因此为什么我们已经创造了它明确)
所以这工作得很好 - 我们可以使用流畅的API来映射复杂的键,它是无关紧要的。基本上我们已经通过交汇点将两个标准表加入了多对多。优胜者。
现在,我们需要加入结表(UserSchool
)到另一个表,也可作为许多一对多:
public class IPAddress
{
public int Id { get; set; }
public string IPAddress { get; set; }
}
public class UserSchoolIPAddress
{
?? what to put in here
public virtual UserSchool UserSchool { get; set; }
public virtual IPAddress IPAddress { get; set; }
}
我都试过了一口流利的API映射和通过命名约定和注释来指定ID属性:流畅的API映射只是失败,因为我认为它不喜欢使用导航实体的属性;带注释的ID绑定仅在表模式中第二次复制了UserSchool
属性,导致我们出现同步问题。
那么,有没有人遇到过这种情况,并找到了解决方案?
正如我在我原来的问题提到的,我们实际存储的数据对象作为结映射的性能 - 例如'UserSchool'对象实际上有连接其它外键和权限级别。所以我们需要手动配置它们。 – Katstevens