微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – web.config中的EF 4.1代码优先连接字符串

我今天有一个噩梦般的日子.我已经成功地在本地进行了代码优先开发,并且一切都很顺利,我的数据库删除并在模型更改时根据需要重新创建.但是,在尝试将项目“升级”到mydiscountasp.net上的sqlserver2008登台服务器时,我的问题就开始了.由于用户无法删除/重新创建共享主机数据库,因此我进行了本地备份并将其还原到服务器上.更进一步..当我通过sqlserver mgt studio登录服务器时,我可以看到数据库,它看起来都很好.但是,我似乎无法弄清楚如何通过web.config连接到数据库.我开始使用简单的ado.net sysntax连接字符串:

<add name="MyWebSiteContext" 
  connectionString="Server=esql2k123.discountasp.net;
  Database=sql2008R2_123456_test;uid=sql2008R2_123456_test_user;pwd=mypassword;" 
  providerName="System.Data.sqlClient"/>

这不起作用,并给出一个错误,说关键字’服务器’无法识别.经过大量的谷歌搜索后,似乎问题很可能与providerName =“System.Data.sqlClient”部分有关.

所以在将其更改为providerName =“System.Data.EntityClient”时,我充满了希望.唉,同样的故事.

为了缩短(非常)冗长的故事,我尝试了许多排列(突变是操作词!! :)但似乎无法达到代码优先ef连接字符串要求的正确语法要求.

最近有没有人去过类似的箍,发现了一个有效的解决方案?

手指,脚趾和眼睛xx’d ..

[UPDATE]我设法通过格式化我的连接字符串(ALMOST)工作如下:

<add name="GBCWebSiteContext" 
connectionString="Data Source=esql2k123.discountasp.net;Initial Catalog=sql2008R2_123456_test;Persist Security Info=True;MultipleActiveResultSets=True;User ID=sql2008R2_123456_test_user;Password=mypass" providerName="System.Data.sqlClient"/>

我现在能够在执行linq选择时停止并调试控制器操作.但是,在尝试返回行时,我现在收到一个异常,该异常表明:触发器返回结果集,服务器选项’disallow results from triggers’为true

那么,这里拼图的最后一块是什么,是连接字符串中的一个额外选项来否定这个问题?

[更新2]
哈利卢拉 – 我已经破解了坚果.正如我已经清除了global.asax行:

Database.Setinitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<MyWebSiteContext>());

我没有意识到我需要在Database.Setinitializer()中包含一个空引用.

瞧,以下是我的问题:

Database.Setinitializer<MyWebSiteContext>(null);

谢谢大家的各种建议,他们帮助我专注于这个问题.很高兴 :)

解决方法

您是否尝试过数据源和初始目录?

sqlConnectionString="data source=myServer.myDomain.com;initial catalog=mydbname;user id=myUid;password=myPwd"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐