Entity framework ADO.NET实体中的公共列

Entity framework ADO.NET实体中的公共列,entity-framework,.net-3.5,inheritance,Entity Framework,.net 3.5,Inheritance,在使用EDMX设计器时,是否有方法将不同表中的公共列提取到ADO.NET实体框架中的单个基类中?例如,我的数据库中的每个表都有一个LastUpdatedBy和LastUpdateDate列,这是审计所必需的。我希望在生成的ObjectContext中的SavingChanges事件中自动设置这些值,而无需强制转换到单个实体类型。请看一个例子。您可以在示例中看到它们如何强制转换到实体以访问各种属性。如果基类型是该类型,我希望能够对其进行一次大小写并设置属性。恐怕不行-据我所知,EDMX设计器将为每

在使用EDMX设计器时,是否有方法将不同表中的公共列提取到ADO.NET实体框架中的单个基类中?例如,我的数据库中的每个表都有一个LastUpdatedBy和LastUpdateDate列,这是审计所必需的。我希望在生成的ObjectContext中的SavingChanges事件中自动设置这些值,而无需强制转换到单个实体类型。请看一个例子。您可以在示例中看到它们如何强制转换到实体以访问各种属性。如果基类型是该类型,我希望能够对其进行一次大小写并设置属性。

恐怕不行-据我所知,EDMX设计器将为每个表/实体生成一个单独的(尽管是部分的)类,并且您无法将任何公共基表真正注入到混合中

您可以研究的可能是将公共数据放入接口ICommonData中,然后让类实现该接口

但不确定如何将该接口注入EDMX设计器的流程中:-

马克,看一看。它是用于LINQ到SQL的,但是可以很容易地按照以下方式适应EF。第一种方法处理您的场景,其中所有表都有所需的审核列,第二种方法考虑对整个数据库使用单个审核表,并实际保留每次更改的新旧值

我被夹在两者之间,因为第二种方法无法识别新添加的记录,但第一种方法没有更改历史。在一个应用程序中实现两种审计策略让我感到不舒服,我需要CreatedOn值,所以我必须至少使用第一种方法


顺便说一句,如果您像我一样认为XML序列化是一种笨拙的存储对象状态历史的方法,那么您可以看看它,它使用AuditValues详细表存储更改属性的新旧值,但这一个根本不审核插入内容。

它审核插入内容-但阅读第1部分,了解我为什么会以稍微前后颠倒的方式进行审核,我明白你为什么说它不。。。它没有插入审计记录,但审计线索仍然存在

西蒙