2

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

喜欢

public class Employee : BaseModel
{

}

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

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

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

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

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

4

1 回答 1

1

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

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

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

于 2012-12-16T15:10:48.527 回答