我正在尝试使用带有Adventureworks2012数据库的向导创建ADO.NET实体数据模型的数据库第一种方法。
测试数据库连接是否正常,连接字符串已添加到App.Config。
我正在选择除标记为(dbo)AWBuildVersion
,DatabaseLog
和ErrorLog
的所有表格。
当向导完成时,.edmx
文件为空,如果我在XML视图中查看文件,则EntityContainer
为空。
创建模型后,它会在输出窗口中返回此错误:
由于以下异常,无法生成模型:' 表AdventureWorks2012.Production.Document由a引用 关系,但无法找到。
我正在使用VS 2010& .NET Framework 4.0
答案 0 :(得分:4)
似乎Entity Framework不知道如何处理像表字段上设置的hierarchyid这样的数据类型。我删除了Production.Document表以获取要解决我的问题的实体列表。
另请注意,下面的参考资料适用于Code Plex SQL Sever的EF版本1.0的Adventureworks 2008R2,我使用EF版本4.4从同一个CodePlex网站使用Adventureworks 2012。
参考:http://msftdbprodsamples.codeplex.com/wikipage?title=AW2008Details
注意:EF 1.0兼容性问题
实体框架团队希望我们让您知道AdventureWorks2008在其使用的Katmai功能方面略微领先于曲线。实体框架中不支持AdventureWorks2008中的某些数据类型(例如hierarchyid和geometry)。解决方法是尽可能从模型中排除类似Production.Document的表,因为Entity Framework 1.0中当前不支持hierarchyid数据类型。遗憾的是,从数据库更新模型的Entity Framework工具将引入类似Production.Document的表,即使它们在创建模型时被明确排除,因此目前不支持在AdventureWorks2008R2上使用该功能。我们期待实体框架的后续版本具有完整的SQL Server 2008类型支持。 最后编辑于2010年5月25日下午2:22由bonniefe,版本17
答案 1 :(得分:0)
有一种方法可以解决这个 IF 你试图从这个例子中学习并且没有做任何有意义的事情。我删除了违规表的外键并将其删除,并且能够成功获取
答案 2 :(得分:0)
取消选中[Allow nulls]复选框(在表格设计中),查看未创建的表格的所有外键(未转换为模型的表格)。
然后,您可以通过执行以下步骤来更新模型以检索这些表: -
步骤1 - 右键单击.EDMX文件设计中的某些位置(即Model1.EDMX [Diagram1])。 第2步 - 然后从上下文菜单中选择/更新数据库中的模型.... 第3步 - 然后选择“添加” 步骤4 - 然后花费“表格”复选框并选择所需的表格(第一次不创建表格)。 步骤5 - 然后单击完成按钮。 第6步 - 保存解决方案,希望一切都好。
注意:我正在使用Visual Studio 2013。
祝你好运。