我的项目中有一个用户模型和一个事件模型。事件有一个创建者(用户)和参与者(用户),所以事件与用户是一对多的关系,与同一张表也是多对多的关系。
我首先有这样的一对多关系:
Public class Event
{
...
public int CreatedById { get; set; }
public virtual User CreatedBy { get; set; }
...
}
然后,当我添加多对多关系时,迁移不会生成多对多关系:
Public class User
{
...
public virtual ICollection<Event> Events { get; set; }
...
}
Public class Event
{
...
public int CreatedById { get; set; }
public virtual User CreatedBy { get; set; }
public virtual ICollection<User> Users { get; set; }
...
}
如果我删除一对多关系,那么迁移会成功生成多对多关系。
有没有办法只用数据注释来做到这一点?
最佳答案
英孚不知道在哪里User.Events
必须映射到。可能是 Event.CreatedBy
或者它可以是 Event.Users
.两者都会产生一个有效的模型。您必须通过应用 [InverseProperty]
给 EF 一点提示您想要什么。属性:
public class User
{
...
[InverseProperty("Users")]
public virtual ICollection<Event> Events { get; set; }
...
}
关于entity-framework - Entity Framework 代码优先 : One-to-Many and Many-to-Many relationships to same table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121460/