ADO.NET实体框架:更新向导不会添加表

问题描述 投票:87回答:11

added a new ADO.Net Entity Data Model进入我的项目并使用Update Wizard将表添加到模型中。五个选定的表被添加到设计图面。另外两个表不会添加。我在向导中选择它们并单击“完成”,但它们从未出现在设计图面上。

这是一个错误,还是有些情况下表格无法添加到模型中(按设计)?


更新:XML(* .edmx)揭示了问题。

<!--Errors Found During Generation:
warning 6013: The table/view 'FooBar.dbo.Roles' does not 
have a primary key defined and no valid primary key could be inferred. 
This table/view has been excluded. To use the entity you will need to 
review your schema, add the correct keys and uncomment it.-->
<!--<EntityType Name="Roles">
    <Property Name="role_id" Type="decimal" />
    <Property Name="role_desc" Type="nvarchar" MaxLength="30" />
</EntityType>-->

感谢Craig的回复。

.net visual-studio-2008 entity-framework ado.net primary-key
11个回答
43
投票

设计表面与实体模型不同。您可以在EDMX中的映射中放置一个表格,该表格不会出现在设计图面上。将文件视为XML以查看是否是这种情况。在这种情况下,更新向导将不允许您重新添加表,因为它们已经是实体模型的一部分。因此,一般来说,更新向导本身更多地了解您的实体模型,而不是设计表面。

我不认为这正是您所处的情况,但它应该为您提供解决方案的一般想法:进入XML并查找对相关表的引用。


0
投票

只是为之前没有这么做过的人扔掉更多的细节。我正在使用安装了更新4的visual studio 2013。我在表中添加了一些字段,从模型中删除了表然后进行了更新,它不会让我检查任何表。

我有一把主键。

我创建了一个新的测试表,它出现了,它会让我检查它,但不是我原来的。

我之前从未用XML打开它,也不知道如何做到这一点。右键单击.edmx文件并“打开方式” - 选择xml编辑器。

有问题的表是可以的,它甚至有新字段(奇怪)。

我删除了它的所有引用(花了几次) - 删除一个并保存后,如果你试图打开它并且它不会显示只是继续并选择“查看XML” - 看看错误和基本上跟着弹跳球,直到你把它清理干净。

希望额外的细节可以帮助别人。


0
投票

我找到的一种简单方法是(在SQL Server Management Studio中)添加类型为INT的ID列,取消选择“允许空值”,并在列属性(ID)>>标识规范>>下检查(是标识),并使确定增量设定。

完成上述操作后,返回.edmx窗口,右键单击,然后从数据库更新模型。


38
投票

将主键设置为所有表,或者只将一个未选中的复选框设置为“允许空”到每个表的任何列。这个对我有用 :)


10
投票

1.更改表结构并添加主列。更新模型。

2.在XML编辑器中修改.EDMX文件,并尝试在此特定表的标记下添加新列。 (不管用)

3.而不是创建一个新的主列到现有表,我将通过涉及所有现有列来创建一个复合键。(WORKED)

Entity Framework: Adding DataTable with no Primary Key to Entity Model.


5
投票

我也有这个问题,以上所有都不适合我。对我有帮助的是以下内容。

当您尝试连接数据库时,数据库可以使用具有不同凭据的不同用户,它可以接受。让我们说用户A直到D.

如果您尝试与用户建立连接,请确保用户已启用正确的凭据,在这种情况下,启用了读取和写入选项。

为此,启动MS SQL Server Managment Studio,与SQL Server连接并选择您尝试在Visual Studio中建立连接的数据库。在“your_dbname” - >“安全性” - >“用户”下,您可以找到用户列表。右键单击您尝试登录的用户名,然后选择属性。一个窗口打开。选择“常规”(默认选中)页面,在“数据库角色成员资格”选项卡下,确保选中“db_datareader”和“db_datawrite”。

注意:当您登录MS SQL Server Management Studio时,请确保您使用可以启用/禁用这些选项的用户登录...


5
投票

检查特定表格中的“空值”。如果所有列都设置为“允许空”,则实体框架将其视为“空”表。我有同样的问题,取消选中'Allow Null'并添加了所需的表格。


1
投票

我的解决方案是删除整个模型并读取它,包括我想要的新表。

我不小心删除了设计器中的一个表,无法读取它。因此删除整个模型并阅读它。

我也有一些问题(Ado.Net Entity Data Model Not Updating Correctly


1
投票

这已在最新版本中解决(环境:VS 2012,.net framework 4.5)。简单地打开.edmx文件并添加所需的表/存储过程/视图。没有主键的表/视图将被创建为只读表/视图。

表/视图“TABLE_NAME”没有定义主键。已推断密钥,并将定义创建为只读表/视图。


1
投票

不添加没有主键的表。


0
投票

您不需要删除整个模型(可能是数百个表!)。

向导可以处理“添加新”项目,但是一些更改,例如更改组合键和重命名列 - 它不知道该怎么做 - 所以它不会尝试 - 并且事情变得不同步。

SO:从模型(概念模式)和Model.Store中删除有问题的表,然后使用向导更新模型,并重新添加相关表。

© www.soinside.com 2019 - 2024. All rights reserved.