我的项目中有一个用户模型和一个事件模型。事件有创建者(用户)和参与者(用户),因此事件与用户具有一对多关系,并且与同一个表也具有多对多关系。
我首先有这样的一对多关系:
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; }
...
}
如果我删除一对多关系,那么迁移将成功生成多对多关系。
有没有办法只用数据注释来做到这一点?
EF不知道在哪里User.Events
必须映射到。它可能是Event.CreatedBy
或者它可能是Event.Users
。两者都会产生一个有效的模型。您必须通过应用以下命令给 EF 一点提示:[InverseProperty]
属性:
public class User
{
...
[InverseProperty("Users")]
public virtual ICollection<Event> Events { get; set; }
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)