C# 从模型优先迁移到代码优先:使用EF 5.x DbContext Fluent Generator的ComplexTypes

C# 从模型优先迁移到代码优先:使用EF 5.x DbContext Fluent Generator的ComplexTypes,c#,entity-framework,visual-studio-2012,entity-framework-5,C#,Entity Framework,Visual Studio 2012,Entity Framework 5,我使用的是NuGet最新的EntityFramework 5。我不知道我是否做错了,但复杂类型似乎不能与此模板一起工作???无论我做什么,我总是会遇到以下编译时错误: 正在运行转换:System.InvalidCastException:无法将类型为“System.Data.Metadata.Edm.ComplexType”的对象强制转换为类型为“System.Data.Metadata.Edm.PrimitiveType” 例如: 我创建了一个空模型SimpleModel,然后在其中添加了一个

我使用的是NuGet最新的EntityFramework 5。我不知道我是否做错了,但复杂类型似乎不能与此模板一起工作???无论我做什么,我总是会遇到以下编译时错误:

正在运行转换:System.InvalidCastException:无法将类型为“System.Data.Metadata.Edm.ComplexType”的对象强制转换为类型为“System.Data.Metadata.Edm.PrimitiveType”

例如:

我创建了一个空模型SimpleModel,然后在其中添加了一个简单实体、Foo和一个称为复杂类型Bundle的复杂属性。所有这些都是使用EDM设计器完成的

我开始从模型生成数据库,以便将模型持久化到SQLEXPRESS数据库中。运行脚本,一切正常。我使用新的实体模型编写了一些东西,效果很好,即SaveChanges工作正常

我去添加代码生成项并选择了这个模板:EF 5.x DbContext Fluent Generator来创建SimpleModel.tt系列模板文件,我立即发现了上面的错误

查看SimpleModel.Mapping.tt模板生成的SimpleModel.Mapping.cs文件时,我发现该代码文件不完整。这是唯一一个未完成的文件,即映射代码的生成正在中断。此模板是否与最新的EF 5兼容

我有一个现有的数据库,其中有几个表和一个基于ObjectContext和EntityObjects的实体模型,即模型优先。最重要的是,我有一个现有的数据层,它利用映射到这些表的实体,许多数据被适当地捆绑在复杂类型中,捆绑在数字和文本中,没有标识

关键是我需要将实体模型从使用ObjectContext和EntityObjects迁移到DbContext和POCOs,然后我想先编写代码。我该怎么做

任何帮助都会事先得到感谢

我该怎么做

Imho要么使用,但我认为他们还不支持EF5和反向工程数据库,要么自己先编写代码映射


该生成器不是由MS提供的,如果您有任何问题,应将其作为错误报告给其开发人员。如果您检查它,它声称不支持复杂类型。

是的,先生,我认为首先进入代码并生成代码的最佳方法是使用EF power tools和反向工程。问题是,我有很多实体是从其他实体派生的,有多态关联和TPT映射,我还不是很流利。  在任何情况下,当将DB反向工程为先编码时,所有继承都明显丢失,但很好地作为级联1导入↔ 0..1关系。此外,默认情况下,所有复杂特性都作为标量特性导入。这一切都很烦人。。但这可能是必须的。我的意思是,EF团队必须能够编写框架工具,能够读懂聪明程序员的想法,准确地知道我们希望如何自动生成代码,并最小化我们必须做的所有工作,对吗-I’对不起,我有点愤世嫉俗。。