2014-12-02 75 views
3

我已经使用Microsoft SQL Server 2012从脚本创建了一个sql数据库,并使用实体框架在C#中生成了一些类。现在我不得不修改并向该数据库添加一些新项目,包括存储过程和新表格。实体数据模型向导不显示新表

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

我正在生成在Visual Studio框架的步骤是:

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

在更改数据库以获取这些更改以显示在实体框架中之后,是否需要执行一些特殊步骤?

UPDATE:

我有一个选项“从数据库更新模式”一领先,但我的Visual Studio有这样的选项。网页搜索表明它在“模型浏览器窗口”中找到,我也没有在VS中找到它。进一步的搜索表明这个窗口在打开“edmx”文件后变为可用。我已经在整个PC上搜索该文件扩展名并找到了一些结果,但它们都来自其他人的项目。我无法找到与该项目的c#解决方案或sql数据库相关联的.edmx。

+0

我对Code First并不了解很多,但似乎您正在尝试执行数据库优先策略。选择代码首先可能是你的问题。在“选择对象和设置”中,毫无疑问,您正在代码而不是数据库中查看模型。 – pseudocoder 2014-12-03 19:13:31

+0

@pseudocoder:是否有另一种选择,你会建议呢? – 2014-12-03 19:36:25

+0

当我添加EDM时,我会看到选项“Empty Model”或“Generate from database”。在这一点上没有提到“代码优先”。我会选择“从数据库生成”,然后确保我的连接字符串指向正确的服务器/数据库。我使用EF 6. – pseudocoder 2014-12-03 20:26:28

回答

2

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

我有一种感觉,这是一个小的,十秒钟的东西,我失踪了。

UPDATE:

重做方面所作的新表可用,但不是存储过程。这是我如何修复它。

在模型向导中,选择“代码优先从数据库”将不包括存储过程,无论出于何种原因。对我来说,正确的选择是“EF Designer from Database”。我不仅获得了新表和存储过程,还生成了第一个选项不会创建的edmx文件。

0

我和Code First有类似的问题。我遵循了问题中提到的所有步骤,但表格的模型没有生成。

  • 构建,清理解决方案
  • 在web.config中从康涅狄格州删除字符串
  • 删除所有文件夹的型号
  • 右键点击Models文件夹,添加新项目
  • 选择ADO.NET实体数据模型
  • 添加名字从数据库模型
  • 选择代码首先
  • SEL ECT新建连接
  • 在web.config中保存连接设置 - 选中

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

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

和它的工作。

如果有人遇到这种情况,我希望它有帮助。

1

我有这个问题,结果证明正在使用的SQL用户没有选择访问新创建的表。

我跑了GRANT SELECT ON [表名]至[sqluser]数据库中的所有新表上。您也可以将sql用户添加到像sysadmin这样的服务器角色。

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

相关问题