У меня есть перекрестные отношения с той же таблицей, в 3-м объекте.
При попытке вставить новый объект выдается ошибка:
Нарушено ограничение множественности. Роль
'OrgOwners_Organisation_Target' отношений
'GBankDataSource.OrgOwners_Organisation' имеет кратность 1 или 0..1.
Я пытался комментировать [ForeignKey("...")]
в любом из классов, но ничего не произошло. EF всегда выбирает одно поле (OrgRefID в данном примере) и использует его или оба отношения, в то время как OrgID не используется.
public class OrganisationInfo
{
[Key]
public int OrgID { get; set; }
...
public virtual List<OrgOwners> OrgOwners { get; set; } // object that throws error
}
public class OrgOwners
{
[Key]
public int OrgOwnerID { get; set; }
public int OrgID { get; set; } //Suppose to be a ForeignKey for (OrganisationInfo OrgOwners List)
public int? OrgRefID { get; set; }
...
[ForeignKey("OrgRefID")]
public virtual OrganisationInfo Organisation { get; set; } //(Suppose to use OrgRefID as ForeignKey)
}
Когда я добавляю запись в OrgOwners без организации ( Organisation =null)
- все в порядке. Но когда я делаю
var first = new OrganisationInfo (); // Первая организация DB.OrganisationInfoes.Add (first);
var nextOrg = new OrganisationInfo (); // вторая организация
first.OrgOwners = новый список ();
var Owner = new OrgOwners (); Owner.Organsiation = nextOrg;
first.OrgOwners.Add (Владелец); // Добавить владельца со второй организацией к первой.
Я получил ошибку.
Нарушено ограничение множественности.
OrgOwner.Organisation - это НЕ та же информация об организации, что и в корне списка OrgOwners. Это должны быть разные элементы OrganisationInfo, связанные с OrgRefID ForeignKey.