我做了一些调查,我想知道以下是否可行。
我希望创建一个BaseEntityWithDetails类,我可以为任何我想要扩展的类型重用它。例如
public abstract class EntityDetail
{
}
此类用于保存实体的键和值。
“产品”将通过以下方式进行扩展......
public class ProductDetail : EntityDetail
{
}
public class Product : BaseEntityWithDetails<ProductDetail>
{
}
基类“BaseEntityWithDetails”将提供一些帮助方法来设置和获取。你怎么看?
使用EF CodeFirst进行映射的最有效方法是什么,同时非常容易允许其他类型实现DetailsEntityTypeConfiguration,如下所示
public class ProductMap : DetailsEntityTypeConfiguration<Product, ProductDetail>
{
}
提前致谢!
答案 0 :(得分:1)
我想引用一个非常聪明的人:Reuse is a fallacy。不要做这样的事情,因为它只会让你的设计更加模糊和复杂。将您的继承保存到域中实际上具有相同行为的实体,不要预先做这种类型的假设。
作为旁注:如果您将“EntityDetail”放入数据库,则可以将其映射为table per type,但正如我之前所说,这不是一个好主意。