在试图更新Visual 2010中的实体框架图(EFD)时,我很难从一个特定的Server 2008数据库中看到表。在将数据库移动到新服务器之前,这是工作的。此服务器上的所有其他DB都成功地显示了它们的表(在VS实体框架设计中>右键单击>更新数据库模型> 'Add‘tab >展开tables = nothing出现在这里时)。
应激
我认为这是一个权限问题,但我似乎在DBs中找不到任何不同之处(在实体框架设计器中正确显示它们的表)和这个不同之处。我也看不出用户VS可能使用什么来获取表信息,我假设我已经设置了连接,但不确定。
我完全被困住了。在实体框架设计器中,我试图使用"System.Data.SqlClient“、windows集成身份验证(它应该使用系统上的管理帐户和数据库所有者)进行连接。实体框架的连接字符串如下:
metadata=res://*;provider=System.Data.SqlClient;
provider connection string="Data Source=localhost;Initial Catalog=myDB;
Integrated Security=True"最后一个注意事项--如果我只进入右上角的VS到我的服务器资源管理器( Server )中,我可以在那里创建一个连接并查看所有的表。然而,不幸的是,这无助于我的EFD。
发布于 2011-12-17 19:52:02
排除故障的步骤:
database
我发现这很好,没有什么可以破坏它,但是区别在于,我没有创建新的模式和用户NT授权/系统,直到脚本的末尾,在开始运行完整的脚本时才创建它们(而且它不起作用)。我不知道为什么会出现这样的问题--所有的表都是用'dbo.‘’创建的。无论如何,前缀都不应该放在这个模式中。
考虑到这一点,我进入了原来的db,简单地删除了NT授权/系统的模式和用户登录,一切都很好。再一次,如果有人有意见的话,我很乐意发表意见。
现在一切都在工作,我甚至重新映射了这个用户的安全性,以便再次允许公众访问数据库,并为它创建了一个默认的模式,并使用相同的名称,它运行良好。我真的无法解释这件事。
发布于 2011-12-15 19:48:51
它可能是不同版本的实体框架,但这些连接字符串中似乎缺少了一些东西,我的如下所示:
connectionString="metadata=res://*/xxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string="data source=xxx;initial catalog=xxx;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />在提供者声明之前我有一堆东西。
另外,您是否尝试删除.config文件上的连接字符串并重新运行向导,如这个答案:How should I edit an Entity Framework connection string?中所述?
最后,您是否尝试过使用工作的连接生成另一个.edmx文件?如果您对对象层进行了许多与db设计不匹配的自定义更改,那么我猜这不是创建。
https://stackoverflow.com/questions/8525122
复制相似问题