【发布时间】:2016-10-01 01:46:06
【问题描述】:
这里有点有趣,我以前没有遇到过。我们在 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; }
}
(为简洁起见省略了其他附加属性 - 足以说明我们在联结表上有附加属性,因此我们显式创建它)
所以这很好用——我们可以使用 fluent API 来映射复杂的键,它无关紧要。本质上,我们通过连接将两个标准表连接成多对多。赢家。
现在,我们需要将 junction 表 (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; }
}
我已经尝试过通过命名约定和注释指定 ID 属性的流畅 API 映射和:流畅 API 映射失败,因为我认为它不喜欢使用导航实体特性;带有注释的 ID 绑定只是在表架构上第二次复制了 UserSchool 属性,从而导致我们出现同步问题。
那么,有没有人遇到过这种情况并找到了解决方案?
【问题讨论】:
标签: entity-framework entity-framework-6