我有一个数据库,里面已经装满了包含数据的表。我所看到的是所有表都有 5 个共同的列:
- Id-long, key
- 已删除,位
- 已删除日期,小日期时间
- 最后更新, 小日期时间
- LastUpdateUser, nvarchar
现在,有一些常见的操作是基于当前复制到任何地方的字段完成
的我想要的是创建一个基类,只包含这些公共属性和对它们所做的方法,并使所有其他实体都从中派生。
我不需要或不想在数据库本身上拥有这个基本实体,这只是我想帮助编码部分的东西。
问题是这是数据库第一,我无法更改数据库,所以我所要做的就是 POCO 类和 EDMX。
我怎样才能做到这一点?
您正在寻找类似于TPH(http://msdn.microsoft.com/en-us/data/jj618292.aspx)的东西
但是,我认为这对您不起作用,因为您有多个现有表。
可能的解决方案之一是:
- 创建一个名为"BaseModel"的基类(或类似的东西)
- 将这些属性添加为摘要以强制覆盖它们
- 在该基类中创建一个方法来填充这些字段,或者创建一个帮助程序,该帮助程序将 BaseModel、IsDeleted、LastUpdate、LastUpdateUser 作为参数并更新模型。
- 扩展由 model.tt 文件生成的分部类,并从 BaseModel 类继承。
谢谢戴夫
- 展开 .edmx 文件并打开 Model.tt 文件(不是 Model.Context.tt 文件)
- 查找定义"分部类"的行宣布。
- 应该看起来像这样:<#=codeStringGenerator.EntityClassOpen(entity)#>
- 将继承":您的基类"添加到行的末尾
做。保存模型后,您将拥有所有旧实体派生基类,当此模板生成新实体时,它也将派生基类。