实体框架数据库优先 如何更改实体以使其派生自基类



我有一个数据库,里面已经装满了包含数据的表。我所看到的是所有表都有 5 个共同的列:

  • Id-long, key
  • 已删除,位
  • 已删除日期,小日期时间
  • 最后更新, 小日期时间
  • LastUpdateUser, nvarchar

现在,有一些常见的操作是基于当前复制到任何地方的字段完成

我想要的是创建一个基类,只包含这些公共属性和对它们所做的方法,并使所有其他实体都从中派生。

我不需要或不想在数据库本身上拥有这个基本实体,这只是我想帮助编码部分的东西。

问题是这是数据库第一,我无法更改数据库,所以我所要做的就是 POCO 类和 EDMX。

我怎样才能做到这一点?

您正在寻找类似于TPH(http://msdn.microsoft.com/en-us/data/jj618292.aspx)的东西

但是,我认为这对您不起作用,因为您有多个现有表。

可能的解决方案之一是:

  1. 创建一个名为"BaseModel"的基类(或类似的东西)
  2. 将这些属性添加为摘要以强制覆盖它们
  3. 在该基类中创建一个方法来填充这些字段,或者创建一个帮助程序,该帮助程序将 BaseModel、IsDeleted、LastUpdate、LastUpdateUser 作为参数并更新模型。
  4. 扩展由 model.tt 文件生成的分部类,并从 BaseModel 类继承。

谢谢戴夫

  1. 展开 .edmx 文件并打开 Model.tt 文件(不是 Model.Context.tt 文件)
  2. 查找定义"分部类"的行宣布。
  3. 应该看起来像这样:<#=codeStringGenerator.EntityClassOpen(entity)#>
  4. 将继承":您的基类"添加到行的末尾

做。保存模型后,您将拥有所有旧实体派生基类,当此模板生成新实体时,它也将派生基类。

相关内容

  • 没有找到相关文章

最新更新