У меня есть приложение .NET MVC, в котором я создал отношение «многие ко многим» между пользователями и компаниями (это те компании, к которым пользователь имеет доступ).
в пользовательской модели я добавил коллекцию компаний:
public virtual ICollection<Company> companies { get; set; }
, а в модели компании я добавил коллекцию пользователей:
public virtual ICollection<ApplicationUser> users { get; set; }
и добавил это в OnModelCreating():
modelBuilder.Entity<ApplicationUser>()
.HasMany<Company>(s => s.companies)
.WithMany(c => c.users)
.Map(cs =>
{
cs.MapLeftKey("id_user");
cs.MapRightKey("id_company");
cs.ToTable("users_companies");
});
Работает нормально.Но теперь мне нужно добавить FK для пользователей, чтобы добавить необязательную компанию для пользователя (для представления компании пользователя).это отношение не имеет ничего общего с отношением пользователей и компаний.
, поэтому я добавил свойство в модель пользователя:
[ForeignKey("company")]
[Display(Name = "Company")]
public int? Id_company { get; set; }
и свойство навигации:
public virtual Company company { get; set; }
, а в модели компании я добавил также навигациюсвойство:
public virtual ApplicationUser user { get; set; }
, но когда я пытаюсь обновить базу данных, я получаю эту ошибку:
ApplicationUser_company_Target:: множественность недопустима в роли ApplicationUser_company_Target в отношении ApplicationUser_company,Поскольку свойства зависимой роли не являются ключевыми свойствами, верхняя граница кратности зависимой роли должна быть '*'.
после поиска решения, я попытался украсить навигацию user.companiesсвойство с:
[InverseProperty("usuarios")]
, но это не помогло устранить ошибку ...
(дополнительная информация: обе модели находятся в разных пространствах имен, пользователь находится в myApp.Models, компанияв myApp.Models.DAL, но я думаю, что это не влияет на проблему ...)