EF Codefirst, один класс, несколько таблиц с дискриминатором - PullRequest
1 голос
/ 05 октября 2011

Я провожу небольшое расследование, и мне интересно, возможно ли следующее.

Я хочу создать класс BaseEntityWithDetails, который я могу использовать повторно для любого типа, который я хотел бы иметь расширяемым. Например

public abstract class EntityDetail
{
}

Этот класс используется для сохранения ключа и значения для сущности.

«Продукты» будут расширены следующим образом ...

public class ProductDetail : EntityDetail
{

}

public class Product : BaseEntityWithDetails<ProductDetail>
{

}

Базовый класс "BaseEntityWithDetails" предоставит несколько вспомогательных методов для установки и получения. Как вы думаете?

Каков наиболее эффективный способ сопоставления этого с EF CodeFirst, при этом очень просто позволить другому типу реализовать конфигурацию DetailsEntityTypeConfiguration, как показано ниже

public class ProductMap : DetailsEntityTypeConfiguration<Product, ProductDetail>
{
}

Заранее спасибо!

1 Ответ

1 голос
/ 31 января 2012

Я хотел бы процитировать кого-то действительно умного по этому поводу: Повторное использование является ошибкой . Не беспокойтесь о таких вещах, потому что это сделает ваш дизайн более запутанным и сложным. Сохраните свое наследование для сущностей в вашем домене, которые действительно имеют одинаковое поведение, не делайте этого типа предположений заранее.

В качестве примечания: Вы можете отобразить это как таблицу для типа , если вы поместите свой EntityDetail в свою базу данных, но, как я уже говорил, это просто не очень хорошая идея.

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