扩展entity framework模型以包含新属性

我是EF的新手,所以如果这是一个菜鸟问题,请原谅。

基本上,我们使用Model First为我们的“平台”项目设置EF模型,并在我们构建在此平台之上的许多应用程序中共享。 在其中一些应用程序中,我们希望扩展类以包含其他属性,而无需更改平台中的模型。 这是否可以使用EF 4,如何在不修改.edmx文件的情况下完成此操作?

我注意到生成的类都是部分的,所以我可以创建一个具有相同名称的新的部分类来包含新属性,但是有没有需要处理的映射?

ps在正常情况下我宁愿使用inheritance并创建一个新类来保存新属性而不是再次,我不知道如何用EF做这个…这里的任何启示都将非常感谢!

非常感谢,

您不能使用inheritance,因为一旦从数据源加载实体,EF就不会知道inheritance,因此它将实例化基类型而不使用属性而不是带属性的派生类型。 如果EF必须使用它,则必须在EDMX中映射任何inheritance。

使用分部类将解决您的问题,但:

  • 必须在同一个程序集中定义partial类的所有部分
  • 部分零件的属性不会持久保存到数据库中
  • 部分部件中的属性不能用于linq-to-entities查询

EF生成部分类。 因此,要扩展MyEntity,请创建一个MyEntity.cs文件

partial class MyEntity { public string MyExtraProperty {get;set;} } 

编辑:与生成的实体位于相同的命名空间中

我同意为您的实体的部分类添加其他属性(正如您和Kaido所说)。

这样,您可以自由添加所需的属性,而无需修改生成的类,如果再次生成模型(或从DB更新),则不会修改分部类。

在我看来,向生成实体的部分类添加属性是要走的路。