EF Core 8 с приоритетом кода: объединение объекта с настраиваемым свойством дифференциацииC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 EF Core 8 с приоритетом кода: объединение объекта с настраиваемым свойством дифференциации

Сообщение Anonymous »

Используя EF Core 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, но я надеялся, что смогу сделать это по соглашению, используя отношения.
Я все еще новичок в C# и EF Core, поэтому простите за неправильную терминологию.

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

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

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

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

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

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

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