我有两个有很多关系的课程。
public class Document
{
public int Id { get; set; }
public string Name { get; set; }
public bool AvailableOffline { get; set; }
public string URL { get; set; }
public virtual ICollection<Profile> Profiles { get; set; }
}
public class Profile
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<Document> Documents { get; set; }
}
在每个配置文件中,我希望每个文档都有一个SortOrder字段。所以我在另一个类
中明确了连接表public class ProfileDocuments
{
[Key, Column(Order = 0)]
public int DocumentId { get; set; }
[Key, Column(Order = 1)]
public int ProfileId { get; set; }
public int SortOrder { get; set; }
[ForeignKey("DocumentId")]
public virtual Document Document { get; set; }
[ForeignKey("ProfileId")]
public virtual Profile Profile { get; set; }
}
但是当我更新数据库时,最后一个类的表将没有SortOrder的列。它只保存2个外键。如何告诉EF使用我的列生成此表?
答案 0 :(得分:0)
当多对多关联中的联结表应包含的信息多于两个外键时,不再可能将关联映射为“纯”多对多(隐藏联结类)
您需要在类模型中使用显式类来解决额外信息(如您已经发现的那样),但这也会将关联更改为1-n-1
:
class Document
{
...
public virtual ICollection<ProfileDocument> ProfileDocuments { get; set; }
}
class Profile
{
...
public virtual ICollection<ProfileDocument> ProfileDocuments { get; set; }
}