Entity framework 实体框架4.1不同模型中的复杂类型重用

Entity framework 实体框架4.1不同模型中的复杂类型重用,entity-framework,model,complextype,Entity Framework,Model,Complextype,这是塞纳里奥号,我找不到任何有用的东西。也许我是第一个想到这样做的人: 方法:数据库优先 数据库:SQL Server 2008 R2 项目:DLL数据访问 我有一个数据访问库,它封装了对数据库的所有访问以及biz功能。数据库有许多表,所有表都有以下两列: 上次更新日期:smalldatetime 上次更新者:nvarchar50 该项目包含多个模型或edmx文件,其中仅包含映射到它们所表示的表的相关实体。由于每个表都包含上次更新的列,我在其中一个模型中创建了一个复杂类型,如下所示: 复杂类型:

这是塞纳里奥号,我找不到任何有用的东西。也许我是第一个想到这样做的人:

方法:数据库优先

数据库:SQL Server 2008 R2

项目:DLL数据访问

我有一个数据访问库,它封装了对数据库的所有访问以及biz功能。数据库有许多表,所有表都有以下两列:

上次更新日期:smalldatetime 上次更新者:nvarchar50 该项目包含多个模型或edmx文件,其中仅包含映射到它们所表示的表的相关实体。由于每个表都包含上次更新的列,我在其中一个模型中创建了一个复杂类型,如下所示:

复杂类型:历史

按字符串:上次\u更新\u的人 日期时间:上次更新日期 问题是它只能在我定义它的模型中使用

A如果我尝试在其他模型中使用它,它不会在设计器中显示它 B如果我在其他模型中定义它,我会得到已经定义的错误历史记录


有什么解决方案可以让一个模型中定义的历史复杂类型可以被其他模型重用吗?

我试图做几乎完全相同的事情,我的数据库字段被创建、创建、修改和修改,包装到复杂类型的RecordHistory中,并在找到答案之前遇到这个问题

概述了解决方案,但由于它相当简单,我也将在这里介绍基本内容:

首先创建复杂类型,就像在.edmx设计器中选择字段一样,单击鼠标右键,选择“重构为新的复杂类型”

在.edmx设计器(而非模型浏览器)中,右键单击另一个具有相同公共列的表/实体,然后选择“添加->复杂属性”

新特性将自动指定一个复杂类型。如果有多个复杂类型,请编辑新属性的属性并适当设置类型

在模型浏览器或设计器中再次右键单击表/图元,然后选择“表映射”

更新每个公共字段的值/属性列,将它们从modified:DateTime更改为history。modified:DateTime

从实体中删除旧的公共字段,只保留复杂类型


作为补充说明,即使是EF5,也不能将封装在复杂类型中的任何字段用作导航属性/外键