Я пытаюсь создать связь между двумя моделями, в которой дочерний элемент связывается с идентификатором PK и другим столбцом Id в родительском элементе.
Public Class AClass
{
public int AClassId {get; set; }
public int UserId { get; set; }
public User User { get; set; }
public ICollection<BClass> LinkedUsers { get; set; }
public int SubUserId { get; set;}
public User SubUser{ get; set; }
public ICollection<BClass> LinkedSubUsers { get; set; }
}
Public Class BClass
{
public int BClassId {get; set; }
public int AClassId {get; set; }
public int UserId { get; set; }
public AClass AClass { get; set; }
public ICollection<Rules> Rules { get; set; }
}
. Таким образом, BClass может существовать только в том случае, если в AClass задан UserId илиSubUserId связан с ним.Несколько классов AClass могут иметь несколько экземпляров BClass для одного и того же пользователя.
public Aclass a = new Aclass();
a.AClassId = 1;
a.UserId = 1;
a.SubUserId = 2;
//Ok
BClass b1 = new BClass();
b1.AClassId = 1;
b1.UserId = 1;
//Ok
BClass b2 = new BClass();
b2.AClassId = 1;
b2.UserId = 1;
//OK
BClass b3 = new BClass();
b3.AClassId = 1;
b3.UserId = 2;
//Not OK No AClass 1 with UserId 3
BClass b1 = new BClass();
b1.AClassId = 1;
b1.UserId = 3;
. Я создаю связь, используя:
System.Data.Entity.ModelConfiguration.EntityTypeConfiguration
HasRequired(c => c.AClass).WithMany(i => i.LinkedUsers).HasForeignKey(t => new { t.AClassId, t.UserId } );
но я получаю ошибку:
"Количество свойств в зависимых и основных ролях в ограничении отношений должно быть одинаковым."
Я надеюсь, что это возможно, но не могупонять, как создать правильное отображение с помощью EF.