我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的回复。
设计表面与实体模型不同。您可以在EDMX中的映射中放置一个表格,该表格不会出现在设计图面上。将文件视为XML以查看是否是这种情况。在这种情况下,更新向导将不允许您重新添加表,因为它们已经是实体模型的一部分。因此,一般来说,更新向导本身更多地了解您的实体模型,而不是设计表面。
我不认为这正是您所处的情况,但它应该为您提供解决方案的一般想法:进入XML并查找对相关表的引用。
只是为之前没有这么做过的人扔掉更多的细节。我正在使用安装了更新4的visual studio 2013。我在表中添加了一些字段,从模型中删除了表然后进行了更新,它不会让我检查任何表。
我有一把主键。
我创建了一个新的测试表,它出现了,它会让我检查它,但不是我原来的。
我之前从未用XML打开它,也不知道如何做到这一点。右键单击.edmx文件并“打开方式” - 选择xml编辑器。
有问题的表是可以的,它甚至有新字段(奇怪)。
我删除了它的所有引用(花了几次) - 删除一个并保存后,如果你试图打开它并且它不会显示只是继续并选择“查看XML” - 看看错误和基本上跟着弹跳球,直到你把它清理干净。
希望额外的细节可以帮助别人。
乔
我找到的一种简单方法是(在SQL Server Management Studio中)添加类型为INT的ID列,取消选择“允许空值”,并在列属性(ID)>>标识规范>>下检查(是标识),并使确定增量设定。
完成上述操作后,返回.edmx窗口,右键单击,然后从数据库更新模型。
将主键设置为所有表,或者只将一个未选中的复选框设置为“允许空”到每个表的任何列。这个对我有用 :)
1.更改表结构并添加主列。更新模型。
2.在XML编辑器中修改.EDMX文件,并尝试在此特定表的标记下添加新列。 (不管用)
3.而不是创建一个新的主列到现有表,我将通过涉及所有现有列来创建一个复合键。(WORKED)
Entity Framework: Adding DataTable with no Primary Key to Entity Model.
我也有这个问题,以上所有都不适合我。对我有帮助的是以下内容。
当您尝试连接数据库时,数据库可以使用具有不同凭据的不同用户,它可以接受。让我们说用户A直到D.
如果您尝试与用户建立连接,请确保用户已启用正确的凭据,在这种情况下,启用了读取和写入选项。
为此,启动MS SQL Server Managment Studio,与SQL Server连接并选择您尝试在Visual Studio中建立连接的数据库。在“your_dbname” - >“安全性” - >“用户”下,您可以找到用户列表。右键单击您尝试登录的用户名,然后选择属性。一个窗口打开。选择“常规”(默认选中)页面,在“数据库角色成员资格”选项卡下,确保选中“db_datareader”和“db_datawrite”。
注意:当您登录MS SQL Server Management Studio时,请确保您使用可以启用/禁用这些选项的用户登录...
检查特定表格中的“空值”。如果所有列都设置为“允许空”,则实体框架将其视为“空”表。我有同样的问题,取消选中'Allow Null'并添加了所需的表格。
我的解决方案是删除整个模型并读取它,包括我想要的新表。
我不小心删除了设计器中的一个表,无法读取它。因此删除整个模型并阅读它。
这已在最新版本中解决(环境:VS 2012,.net framework 4.5)。简单地打开.edmx文件并添加所需的表/存储过程/视图。没有主键的表/视图将被创建为只读表/视图。
表/视图“TABLE_NAME”没有定义主键。已推断密钥,并将定义创建为只读表/视图。
不添加没有主键的表。
您不需要删除整个模型(可能是数百个表!)。
向导可以处理“添加新”项目,但是一些更改,例如更改组合键和重命名列 - 它不知道该怎么做 - 所以它不会尝试 - 并且事情变得不同步。
SO:从模型(概念模式)和Model.Store中删除有问题的表,然后使用向导更新模型,并重新添加相关表。