自定义实体框架生成的模型类



我有一个基类,我需要为我的模型继承它

public class Employee : BaseModel
{
}

在这个BaseModel中,我有几个属性和一些默认实现,这些属性和实现需要对创建的每个应用程序模型都可用。

当我计划迁移到实体框架时,我如何让EF生成的模型也从BaseModel中获得我的方法和属性。

然而,我已经从生成的类中删除了EntityObject,并在每个属性(如)中注释掉了它的相关实现

//ReportPropertyChanging("id");
//_id = StructuralObject.SetValidValue(value);
//ReportPropertyChanged("id");

请建议这是否是一种正确的方式,或者是否有正确的方式来处理这种情况。

挑剔的OO纯粹主义者说:为域中的所有类都有一个基类是一种反模式。遵循OO原则的类(如单一责任,Liskow)不可能都有相同的基类。在不了解基类的情况下,我敢打赌公共属性与公共数据库字段或某些实体框架实现有关,因此基类也打破了对持久性的无知。

实体框架大师(谁??)说:首先处理数据库时最好不要使用基类。或者:当你真的想要一个基类时:首先编写代码,忽略映射中的基类,即不映射继承。请注意,DbContext API是首选的EF API(但您也可以使用它db-first)。

实用主义者说:如果可行,请使用接口。每个类都必须一次又一次地实现它,这很麻烦,但你不会破坏OO原则。这些原则是有原因的。迟早,打破它们会阻碍(但可能不会阻碍)你。

最新更新