Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架数据库首先介绍如何更改实体,使其派生自基类_C#_.net_Entity Framework_Entity Framework 5_Ef Database First - Fatal编程技术网

C# 实体框架数据库首先介绍如何更改实体,使其派生自基类

C# 实体框架数据库首先介绍如何更改实体,使其派生自基类,c#,.net,entity-framework,entity-framework-5,ef-database-first,C#,.net,Entity Framework,Entity Framework 5,Ef Database First,我有一个数据库,里面已经充满了数据表。我所看到的是,所有表都有5个共同的列: 长,钥匙 已删除,位 DateDeleted,SmallDatetime 最后更新,SmallDatetime LastUpdateUser,nvarchar 现在,有一些常见的操作是基于这些字段完成的,这些字段当前在任何地方都被复制 我想要的是创建一个只包含这些公共属性和对它们执行的方法的基类,并使每个其他实体都从中派生 我不需要也不希望数据库本身有这个基本实体,这只是我想帮助编码部分的东西 问题是这是数据库第一

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

  • 长,钥匙
  • 已删除,位
  • DateDeleted,SmallDatetime
  • 最后更新,SmallDatetime
  • LastUpdateUser,nvarchar
现在,有一些常见的操作是基于这些字段完成的,这些字段当前在任何地方都被复制

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

我不需要也不希望数据库本身有这个基本实体,这只是我想帮助编码部分的东西

问题是这是数据库第一,我不能改变数据库,所以我需要处理的只是POCO类和EDMX


我怎样才能做到这一点呢?

您所寻找的是类似于TPH()

但是,我认为这不适合您,因为您有多个现有表

可能的解决办法之一是:

  • 创建一个名为“BaseModel”的基类(或类似的东西)
  • 将这些属性添加为摘要以强制重写它们
  • 在基类中创建一个方法来填充这些字段,或者创建一个以BaseModel、IsDeleted、LastUpdated、LastUpdateUser作为参数并更新模型的帮助器
  • 扩展model.tt文件生成的分部类,并从BaseModel类继承
  • 谢谢, 戴夫

  • 展开.edmx文件并打开Model.tt文件(不是Model.Context.tt文件)
  • 查找“分部类”定义所在的行 宣布
  • 应该是这样的:
  • 将继承“:YourBaseClass”添加到行的末尾

  • 完成了。保存模型后,所有旧实体都将派生基类,当此模板生成新实体时,它也将派生基类。

    我认为这个解决方案可以实现,但我有大约200个表。是否可以通过模板添加此内容?我真的不想手动做200多次嗨,我想说你可以把它添加到T4模板中:)嗨@sergio。我也遇到了同样的问题。您能否建议如何修改T4模板以使生成的类继承基类?