c# - Entity Framework 数据库优先 如何更改实体以使其从基类派生

标签 c# .net entity-framework entity-framework-5 ef-database-first

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

  • Id-long, key
  • 已删除,位
  • DateDeleted,SmallDatetime
  • 上次更新,小日期时间
  • 上次更新用户,nvarchar

现在,有一些常见的操作是基于那些目前到处复制的字段来完成的

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

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

问题是这是数据库优先,我无法更改数据库,所以我只需要使用 POCO 类和 EDMX。

我怎样才能做到这一点?

最佳答案

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

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

一种可能的解决方案是:

  1. 创建一个名为“BaseModel”(或类似名称)的基类
  2. 将这些属性添加为抽象以强制覆盖它们
  3. 在该基类中创建一个方法来填充这些字段,或创建一个将 BaseModel、IsDeleted、LastUpdated、LastUpdatedUser 作为参数的助手并更新模型。
  4. 扩展model.tt文件生成的分部类,继承BaseModel类。

谢谢, 戴夫

关于c# - Entity Framework 数据库优先 如何更改实体以使其从基类派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19021991/

相关文章:

c# - 如何在单个 Razor View 中编辑多个模型

c# - 简单的自定义 Web 控件

c# - 如何检测字符串中的大写 ASP.NET

c# - C#中的继承和引用包含基类的dll

带有 Oracle 数据库的 .NET 应用程序

c# - 慢速 Lambda 表达式

c# - 如何在 Entity Framework 代码优先数据库中手动设置实体主键?

c# - 使用 SSH.NET 在 ProgressBar 中显示文件上传进度

c# - 缓存数据列表 asp.net c#

c# - 为什么没有 where 子句的查询会出现输入字符串异常?