EFCore 8 Code First Join Entity с настраиваемым свойством дифференциацииC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 EFCore 8 Code First Join Entity с настраиваемым свойством дифференциации

Сообщение Anonymous »

Использование EFCore 8, сначала код.
У меня есть две сущности: Student и Guardian. Мне нужен простой способ различать доверительные и некастодиальные отношения.
Итак, у меня есть Student:

Код: Выделить всё

public class Student:Entity {
public int Id {get;set;}
... etc
public virtual ICollection CustodialGuardians {get;set;}
public virtual  ICollection NonCustodialGuardians {get;set;}
}

и Guardian:

Код: Выделить всё

public class Guardian:Entity {
public int Id {get;set;}
... etc
public virtual ICollection CustodialGuardianOf {get;set;}
public virtual  ICollection NonCustodialGuardianOf {get;set;}
}
а затем я создал простой объект соединения:

Код: Выделить всё

    public class CustodialStudentGuardian
{
public virtual Guardian ParentGuardian { get; set; } = default!;
public virtual Student Student { get; set; } = default!;
public bool Custodial {get;set;}=default!;
}
и конфигурация:

Код: Выделить всё

modelBuilder.Entity(e =>
e.HasMany(s => s.CustodialGuardians)
.WithMany(s => s.CustodialGuardianOf)
.UsingEntity(c =>
{
c.HasOne(c => c.Student).WithOne();
c.HasOne(c => c.ParentGuardian).WithOne();
c.HasDiscriminator(d=>d.Custodial).HasValue(true);
});
});
Я повторяю приведенную выше конфигурацию для некастодиальных объектов, где для значения установлено значение false.
Это не работает, но я думаю, возможно, я близок к этому. Я даже не склонен делать это таким образом - мне просто нужен способ проводить различие между родителем-опекуном и родителем, не являющимся опекуном. Я бы предпочел иметь одно свойство и фильтр запросов или что-то в этом роде, вместо того, чтобы добавлять свойство как для хранения, так и для не-хранителя. Например, я мог бы узнать, является ли родитель-опекуном, вместо того, чтобы спрашивать, есть ли у ученика родители-опекуны и является ли этот родитель одним из них.
Я знаю, что могу сделать это с помощью методов расширения и/ или запросы linq, но я надеялся, что смогу сделать это по соглашению, используя отношения.
Я все еще новичок в CSharp и EfCore, поэтому простите за неправильную терминологию.

Подробнее здесь: https://stackoverflow.com/questions/786 ... n-property
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»