我使用Microsoft SQL Server 2012从脚本创建了一个sql数据库,并使用实体框架在C#中生成了一些类。现在,我必须修改并向该数据库添加许多新项目,包括存储过程和新表。
但是,在尝试重新生成Visual Studio Ultimate 2012中的类时,实体数据模型向导仍然显示旧数据库(它在一周前的样子),包括我删除的一些表。没有列出新的东西。我尝试删除并重新创建数据库,重启两个程序,然后重新启动电脑无效。
我在Visual Studio中生成框架所采取的步骤是:
在更改数据库以使这些更改显示在实体框架中之后,我需要采取一些特殊步骤吗?
更新
我已经选择了#34;从数据库更新模型",但我的Visual Studio没有这样的选项。网络搜索表明它在"模型浏览器窗口"中找到,我在VS中也找不到它。进一步搜索表明在打开" edmx"文件。我已经在整个电脑上搜索了该文件扩展名并找到了一些结果,但它们都是来自其他人的#39;项目。我无法找到与该项目的c#解决方案或sql数据库相关联的.edmx。
答案 0 :(得分:2)
在“实体数据模型向导”的“选择您的数据连接”屏幕上,我选择了“新建连接”而不是使用现有连接点击“下一步”。选择服务器名称和数据库名称并重做连接似乎刷新视图,现在新表已经显示。
我有一种感觉,那就是我失踪了一些小的,十秒钟的东西。
<强>更新强>
重做连接使新表可用,但不是存储过程。这就是我修复它的方法。
在模型向导中,无论出于何种原因,选择“Code First From Database”都不会包含存储过程。对我来说,正确的选择是“来自数据库的EF Designer”。我不仅获得了新表和存储过程,而且还生成了第一个选项不会创建的edmx文件。
答案 1 :(得分:2)
我遇到了与Code First类似的问题。我按照问题中提到的所有步骤进行了操作,但是没有生成表格的模型。
我发现这是因为该表没有主键。 所以我改变了表格
[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编辑器中重新出现该表,然后我可以重新添加该表。