Объект со свойством интерфейса – есть ли лучший подход при использовании Entity Framework Core?C#

Место общения программистов C#
Ответить
Anonymous
 Объект со свойством интерфейса – есть ли лучший подход при использовании Entity Framework Core?

Сообщение Anonymous »

В настоящее время я столкнулся с проблемой, из-за которой структура моего объекта не соответствует ожиданиям Entity Framework Core (v7), поскольку моя модель имеет интерфейс в качестве свойства. Мне интересно, есть ли лучший подход для достижения того, что я пытаюсь сделать.
Вот моя (сокращенная) структура объекта:

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

public class ReviewProcess
{
public IReviewStageType CurrentStage { get; private set; }
}

public class ManagerReview : IReviewStageType
{
public string Name { get; private set;}
// State/actions for manager review
}

public class SeniorManagerReview : IReviewStageType
{
public string Name { get; private set;}
// State/actions for senior manager review
}
Различные интерфейсы IReviewStageType определяют различные действия и поведение, которые могут выполняться в ReviewProcess. Однако я пытаюсь сохранить эти данные в реляционной базе данных с ядром EF.
Я думал, что смогу создать IEntityTypeConfiguration, где я мог бы сопоставить IReviewStageType.Name в мою базу данных, поэтому моя таблица ReviewProcess будет выглядеть так: [Id, ReviewStageName]. А затем настройте логику для преобразования имени обратно в соответствующий конкретный тип (

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

ManagerReview/SeniorManagerReview
) при чтении из БД, примерно так (в сокращении):

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

    public void Configure(EntityTypeBuilder builder)
{

builder.OwnsOne(r => r.CurrentStage, stage =>
{
stage.Property(s => s.Name).HasColumnName("ReviewStage_Name");
});

}
Я получаю сообщение об ошибке: указанный тип «» должен быть ссылочным типом, не связанным с интерфейсом, чтобы его можно было использовать в качестве типа сущности.Есть ли способ добиться того, что я пытаюсь сделать? Или мне следует подойти к этому с другой точки зрения, например. не с интерфейсом? Я буду рад любым предложениям. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... using-enti
Ответить

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

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

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

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

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