自定义Entity Framework生成的Model类

时间:2012-12-16 13:25:21

标签: c# entity-framework-4.1

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

喜欢

public class Employee : BaseModel
{

}

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

当我计划迁移到实体框架时,我如何使用EF生成的模型具有来自BaseModel的方法和属性。

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

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

请建议这是正确的方法,还是有正确的方法来处理这种情况。

1 个答案:

答案 0 :(得分:1)

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

entity-framework guru (谁???)说:在使用数据库优先时,最好不要使用基类。或者:当你真正想要一个基类时:先工作代码并忽略映射中的基类,即不映射继承。请注意,DbContext API是首选的EF API(但您也可以使用db-first)。

实用主义者说:如果可行,请使用接口。每个班级必须一次又一次地实施它,这是一个令人讨厌的事情,但你不会违反OO原则。原则是有原因的。迟早打破它们会妨碍(但可能不会抑制)你。