Как создать партнерскую ссылку на колонку PK Plus Другой - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь создать связь между двумя моделями, в которой дочерний элемент связывается с идентификатором 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...