6

我正在尝试通过使用带有 Adventureworks2012 DB 的向导创建 ADO.NET 实体数据模型来尝试数据库优先方法。

测试数据库连接有效,连接字符串被添加到 App.Config。

我正在选择除标记为 (dbo) AWBuildVersionDatabaseLogErrorLog.

当向导完成时,.edmx文件为空,如果我在 XML 视图中查看文件,EntityContainer则为空。

创建模型后,它会在输出窗口中返回此错误:

由于以下异常,无法生成模型:'表 AdventureWorks2012.Production.Document 被关系引用,但找不到。

我正在使用 VS 2010 和 .NET Framework 4.0

4

3 回答 3

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 兼容性问题

Entity Framework 团队希望我们让您知道 AdventureWorks2008 在它使用的 Katmai 功能方面有点领先。AdventureWorks2008 中的某些数据类型(例如hierarchyid 和geometry)在实体框架中不受支持。解决方法是尽可能从模型中排除 Production.Document 之类的表,因为目前在 Entity Framework 1.0 中不支持 hierarchyid 数据类型。不幸的是,从数据库更新模型的实体框架工具将拉入像 Production.Document 这样的表,即使它们在创建模型时被明确排除,因此目前不支持在 AdventureWorks2008R2 上使用该功能。我们期待后续版本的实体框架具有完整的 SQL Server 2008 类型支持。最后编辑于 5 月 25 日,

于 2012-12-20T05:28:38.857 回答
0

如果你试图从这个例子中学习而不做任何有意义的事情,有一种方法可以解决这个问题。我删除了有问题的表的外键并将其删除,并且能够成功获取

于 2013-06-01T04:48:01.557 回答
0

对于未创建的表(未转换为模型的表)的所有外键,取消选中 [允许 Nulls] 复选框(在表设计中)。

在此处输入图像描述

然后,您可以通过执行以下步骤更新您的模型以检索这些表:-

第 1 步 - 右键单击​​ .EDMX 文件设计中的某个位置(即 Model1.EDMX [Diagram1]。第 2 步 - 然后从上下文菜单中选择/从数据库中更新模型...。第 3 步 - 然后选择“添加”第 4 步- 然后展开“表格”复选框并选择您想要的表格(表格不是第一次创建的)。第 5 步 - 然后单击“完成”按钮。第 6 步 - 保存解决方案,希望一切都会好起来。

在此处输入图像描述

注意:我使用的是 Visual Studio 2013。

祝你好运。

于 2015-02-28T12:26:58.247 回答