我正在使用来自 NuGet 的最新 EntityFramework 5。我不知道我是否做错了,但复杂类型似乎不适用于此模板!(???)无论我做什么,我总是得到这个编译时错误:
运行转换:System.InvalidCastException:无法将“System.Data.Metadata.Edm.ComplexType”类型的对象转换为“System.Data.Metadata.Edm.PrimitiveType”类型。
例如:
我创建了一个空模型“SimpleModel”,然后在其中添加了一个简单实体“Foo”和一个复杂类型“Bundle”的名为“Something”的复杂属性。使用 EDM 设计器完成所有这些工作。
我去了“从模型生成数据库”,以便将模型保存在 SQLEXPRESS DB 中。运行脚本,一切顺利。我测试了使用新实体模型编写一些东西,它运行良好,即 SaveChanges() 运行良好。
我去“添加代码生成项”并选择了这个模板:EF 5.x DbContext Fluent Generator创建“SimpleModel.tt”系列模板文件,我立即得到了上面的错误。
在查看“SimpleModel.Mapping.tt”模板生成的“SimpleModel.Mapping.cs”文件时,我看到这个代码文件不完整。这是唯一不完整的文件,即映射代码的生成中断。此模板是否与最新的 EF 5 兼容?
我有一个现有的数据库,其中有几个表和一个基于 and 的实体模型ObjectContext
(EntityObjects
即模型优先的东西)。最重要的是,我有一个现有的数据层,它利用映射到这些表的实体,并且大量数据被适当地捆绑在复杂类型中(捆绑的数字和文本内容没有身份)。
关键是我需要将我的实体模型从使用ObjectContext
and迁移EntityObjects
到DbContext
and POCOs
,然后我想去 Code-First。我该怎么做?
任何帮助表示赞赏!