【发布时间】:2013-10-30 02:50:27
【问题描述】:
我正在使用带有代码优先的实体框架。我的数据库中有一个表,用于存储用户之间的关系。表结构看起来很像这样:
RequestIDUserFromIDUserToID
UserFromID 和 UserToID 都是我的用户表的外键。
在我的用户实体中,我有一个名为Relationships setup 的虚拟属性。我希望此属性是上表中所有RelationshipRequests 的集合,其中当前用户UserID 是UserFromID 或UserToID。
这些是我在上下文中的绑定:
modelBuilder.Entity<UserProfile>()
.HasMany(e => e.Relationships).WithRequired(e => e.UserFrom)
.HasForeignKey(e => e.UserFromID).WillCascadeOnDelete(false);
modelBuilder.Entity<UserProfile>()
.HasMany(e => e.Relationships).WithRequired(e => e.UserTo)
.HasForeignKey(e => e.UserToID).WillCascadeOnDelete(true);
但是一旦为用户检索到关系,集合中唯一的关系就是用户 ID 为 UserToID 的关系。我尝试交换它们,在这种情况下,集合仅包含用户 ID 为UserFromID 的关系。似乎第二个绑定覆盖了第一个,而不是像我预期的那样附加到它。我显然做错了。我的问题是,是否有另一种方法来进行这种绑定,以便按照我想要的方式绑定两个键,或者这是我必须以另一种方式实现的东西?
谢谢!
【问题讨论】:
标签: c# .net entity-framework ef-code-first