2012-12-16 63 views
2

我有一个基类,我将要继承我的模型定制由实体框架生成的模型类

public class Employee : BaseModel 
{ 

} 

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

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

不过,我已经从生成的类中删除了EntityObject和注释掉在每个属性相关实施像

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

请建议,如果这是一个正确的做法还是有处理这个正确的方式种情景。

+0

您应该使用T4模板。另请阅读本文:http://stackoverflow.com/questions/6064138/how-to-define-common-propertyies-for-all-entities-in-entity-framework –

回答

1

挑剔OO纯粹主义者说:你的域中的所有类有一个基类是反模式。遵守面向对象原则的类(如单一责任,Liskow)不可能都具有相同的基类。如果不知道你的基类,我敢打赌,共同的属性必须处理普通的数据库字段或一些实体框架实现,所以基类也打破了持久性的无知。

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

实用主义者说道:如果这是可行的话使用接口。每个班级都要一次又一次地实施它是一件令人讨厌的事情,但是你不会破坏面向对象的原则。这些原则是有原因的。迟早,打破他们将阻碍(但可能不会阻止)你。

+0

请注意,我有共同的属性称为ID和有共同的功能,将使实体的变化被记录等等。所以我希望这不会违反任何模式。如果可能,请在实体框架中建议 – Saravanan

+0

也许您应该向我们展示更多详细信息,以便我们能够对此进行评估。如果您使用DbContext(POCO)API,则您的对象不会参与更改跟踪。 EF将处理该问题。 –