0

我正在使用来自 NuGet 的最新 EntityFramework 5。我不知道我是否做错了,但复杂类型似乎不适用于此模板!(???)无论我做什么,我总是得到这个编译时错误:

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

例如:

  1. 我创建了一个空模型“SimpleModel”,然后在其中添加了一个简单实体“Foo”和一个复杂类型“Bundle”的名为“Something”的复杂属性。使用 EDM 设计器完成所有这些工作。

  2. 我去了“从模型生成数据库”,以便将模型保存在 SQLEXPRESS DB 中。运行脚本,一切顺利。我测试了使用新实体模型编写一些东西,它运行良好,即 SaveChanges() 运行良好。

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

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

我有一个现有的数据库,其中有几个表和一个基于 and 的实体模型ObjectContextEntityObjects即模型优先的东西)。最重要的是,我有一个现有的数据层,它利用映射到这些表的实体,并且大量数据被适当地捆绑在复杂类型中(捆绑的数字和文本内容没有身份)。

关键是我需要将我的实体模型从使用ObjectContextand迁移EntityObjectsDbContextand POCOs,然后我想去 Code-First。我该怎么做?

任何帮助表示赞赏!

4

1 回答 1

0

我该怎么做?

恕我直言,要么使用EF Power 工具(但我认为它们还不支持 EF 5)和反向工程数据库,要么自己编写代码先映射。

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

于 2012-09-13T08:38:43.957 回答