实体框架核心:与额外字段的多对多关系
自定义多对多关系关联表时,
实体框架Core的Fluent API会有局限性。 本文详细介绍了在加入表中添加额外字段的解决方法。> 模型设计
考虑此示例模型:
<code class="language-csharp">public class Member { public int MemberID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public virtual ICollection<MemberComment> MemberComments { get; set; } } public class Comment { public int CommentID { get; set; } public string Message { get; set; } public virtual ICollection<MemberComment> MemberComments { get; set; } } public class MemberComment { [Key, Column(Order = 0)] public int MemberID { get; set; } [Key, Column(Order = 1)] public int CommentID { get; set; } public virtual Member Member { get; set; } public virtual Comment Comment { get; set; } public int Something { get; set; } public string SomethingElse { get; set; } }</code>
MemberComment
Something
表代表联接表,包括额外的属性SomethingElse
和
。 >流利的API限制和解决方案
>
>无法使用Fluent API直接配置加入表。 解决方案是实现两个一对多的关系。> >一对多的方法:查询和操作
>
>这种方法允许类似的查询和数据操作(添加,更新,删除)作为传统的多对多关系。 至关重要的是,它可以根据联接表中的额外字段进行过滤。 级联删除将由于连接表中的不可用的外键。结论
> Fluent API不直接支持自定义的多对多联接表,但使用两个一对多关系提供了功能等值的功能,从而提供了包含和利用协会内其他字段的灵活性。
>以上是如何与实体框架核心中的额外字段实施多一关系?的详细内容。更多信息请关注PHP中文网其他相关文章!