实体数据模型向导不显示新表

时间:2014-12-02 19:37:36

标签: c# sql-server entity-framework visual-studio-2012

我使用Microsoft SQL Server 2012从脚本创建了一个sql数据库,并使用实体框架在C#中生成了一些类。现在,我必须修改并向该数据库添加许多新项目,包括存储过程和新表。

但是,在尝试重新生成Visual Studio Ultimate 2012中的类时,实体数据模型向导仍然显示旧数据库(它在一周前的样子),包括我删除的一些表。没有列出新的东西。我尝试删除并重新创建数据库,重启两个程序,然后重新启动电脑无效。​​

我在Visual Studio中生成框架所采取的步骤是:

  • 向项目添加新项目。
  • 选择ADO.NET实体数据模型。
  • 从数据库中选择Code First。
  • 选择下一步(已填写连接字符串)。
  • 下一个屏幕是"选择对象和设置"窗口,这是我仍然看到旧表(而不是新表)的地方。

在更改数据库以使这些更改显示在实体框架中之后,我需要采取一些特殊步骤吗?

更新

我已经选择了#34;从数据库更新模型",但我的Visual Studio没有这样的选项。网络搜索表明它在"模型浏览器窗口"中找到,我在VS中也找不到它。进一步搜索表明在打开" edmx"文件。我已经在整个电脑上搜索了该文件扩展名并找到了一些结果,但它们都是来自其他人的#39;项目。我无法找到与该项目的c#解决方案或sql数据库相关联的.edmx。

4 个答案:

答案 0 :(得分:2)

在“实体数据模型向导”的“选择您的数据连接”屏幕上,我选择了“新建连接”而不是使用现有连接点击“下一步”。选择服务器名称和数据库名称并重做连接似乎刷新视图,现在新表已经显示。

我有一种感觉,那就是我失踪了一些小的,十秒钟的东西。

<强>更新

重做连接使新表可用,但不是存储过程。这就是我修复它的方法。

在模型向导中,无论出于何种原因,选择“Code First From Database”都不会包含存储过程。对我来说,正确的选择是“来自数据库的EF Designer”。我不仅获得了新表和存储过程,而且还生成了第一个选项不会创建的edmx文件。

答案 1 :(得分:2)

我遇到了与Code First类似的问题。我按照问题中提到的所有步骤进行了操作,但是没有生成表格的模型。

  • 构建,清洁解决方案
  • 从web.config中删除conn字符串
  • 删除Models文件夹
  • 中的所有文件
  • 右键单击Models文件夹,添加,新项
  • 选择ADO.NET实体数据模型
  • 将名称添加到模型
  • 从数据库中选择Code First
  • 选择新建连接
  • 在web.config中保存连接设置 - 已选中

我发现这是因为该表没有主键。 所以我改变了表格

[OrderId] [int] not null identity(1,1) primary key,

并且有效。

如果有人碰到这个,我希望它有所帮助。

答案 2 :(得分:2)

我遇到了这个问题,结果证明正在使用的SQL用户没有对新创建的表的select访问权限。

我在数据库上为所有新表运行GRANT SELECT ON [ tablename ]到[ sqluser ]。您也可以将sql用户添加到服务器角色,如sysadmin。

从数据库运行更新模型然后显示新表。

答案 3 :(得分:0)

我删除了一个表,但没有看到它可以重新添加。我的EDMX文件太乱了。编辑EDMX文件时,必须从“模型浏览器”窗口中删除对该表的所有引用,而不是在EDMX编辑器中重新出现该表,然后我可以重新添加该表。