首页 文章

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

提问于
浏览
83

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的回复 .

10 回答

  • 5

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

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

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

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

  • 1

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

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

  • 10

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

  • 1

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

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

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

    为此,启动MS SQL Server Managment Studio,与SQL Server连接并选择您尝试在Visual Studio中 Build 连接的数据库 . 在'your_dbname' - >安全性 - >用户下,您可以找到用户列表 . 右键单击您尝试登录的用户名,然后选择属性 . 一个窗口打开 . 选择'General'(默认选中)页面并在选项卡'Database role membership' make sure 'db_datareader' and 'db_datawrite' are selected.

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

  • 0

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

  • 37

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

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

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

  • 0

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

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

  • 0

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

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

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

  • 4

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

    我有一把主键 .

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

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

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

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

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

  • 41

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

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

相关问题