.NETMVC实体框架:同两个表之间的一对多和多对多?
我有一个.NETMVC应用程序,我在其中创建了用户和公司(用户可以访问的公司)之间的多对多关系 在用户模型中,我添加了一组公司:.NETMVC实体框架:同两个表之间的一对多和多对多?,.net,asp.net-mvc,entity-framework,many-to-many,one-to-many,.net,Asp.net Mvc,Entity Framework,Many To Many,One To Many,我有一个.NETMVC应用程序,我在其中创建了用户和公司(用户可以访问的公司)之间的多对多关系 在用户模型中,我添加了一组公司: public virtual ICollection<Company> companies { get; set; } 和导航属性: public virtual Company company { get; set; } public virtual ApplicationUser user { get; set; } 在公司模型中,我还添加了一个
public virtual ICollection<Company> companies { get; set; }
和导航属性:
public virtual Company company { get; set; }
public virtual ApplicationUser user { get; set; }
在公司模型中,我还添加了一个导航属性:
public virtual Company company { get; set; }
public virtual ApplicationUser user { get; set; }
但是,当我尝试更新数据库时,出现以下错误:
ApplicationUser_company_Target::多重性在角色中无效
关系中的“应用程序用户\公司\目标”
“应用程序用户公司”。因为依赖角色属性是
不是键属性,而是
从属角色必须为“*”
在搜索解决方案后,我尝试使用以下内容装饰user.Companys导航属性:
[InverseProperty("usuarios")]
但这并没有解决错误
(附加信息:两个模型都位于不同的名称空间中,用户在myApp.models中,公司在myApp.models.DAL中,但我想这不会影响问题…据我所知,消息告诉您的是,您的设计代表一对一的关系,必须是一对多 为了做到这一点,您必须将公司模式从以下位置更改为:
public virtual ApplicationUser user { get; set; }
致:
公共虚拟ICollection
我希望这会有所帮助。为什么要将此添加到Company:public virtual application用户{get;set;}
public virtual ApplicationUser user { get; set; }
public virtual ICollection<ApplicationUser> user { get; set; }
public partial class Company
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Company()
{
this.User = new HashSet<User>();
this.User1 = new HashSet<User>();
}
public int Id { get; set; }
public string Name { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<User> User { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<User> User1 { get; set; }
}