我在本地运行的MVC应用程序运行良好。更新到Azure后,它开始抛出错误:
在Code First模式中使用上下文,其中包含从EDMX文件生成的用于Database First或Model First开发的代码。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用Database First或Model First,请确保实体框架连接字符串包含在启动项目的app.config或web.config中。
我已经检查过本地web.config和azure web.config之间是否有任何区别。除了凭证,一切都是一样的。它写着:
<add name="DBEntities"
connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;
provider=System.Data.SqlClient;
provider connection string="data source=xx;initial catalog=xx;persist security info=True;user id=xx;password=xx;MultipleActiveResultSets=True;application name=EntityFramework""
providerName="System.Data.EntityClient" />
我使用的是EF 6.1.3,MVC5
答案 0 :(得分:7)
我遇到了同样的错误消息,并设法在this post here on StackOverflow的帮助下解决了这个问题。
在Azure管理/网络应用程序/ [您的网络应用程序] /配置/连接字符串中,确保3件事:
连接字符串与项目中的连接字符串同名。
连接字符串Value包含项目中连接字符串中显示的所有元数据。我看起来像这样:
metadata=res://\*/Models.[MyModel].csdl|res://\*/Models.[MyModel].ssdl|res://\*/Models.[MyModel].msl;provider=System.Data.SqlClient;provider connection string="Server=tcp:[myDBServer].database.windows.net,1433;Database=[myDB];User ID=[myDBUser]@[myDBServer];Password=[myPassword];Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
第三列(默认设置为SQL数据库)设置为自定义
答案 1 :(得分:0)
找到一个比添加Azure连接字符串中的所有内容更简单的解决方案。我刚刚更改了Azure中的连接字符串名称。它工作..
答案 2 :(得分:0)
我不得不处理同样的问题。解决方案是
添加以下连接字符串:
add name =“NewDatabaseEntities”connectionString =“metadata = res:// /NewDatabase.csdl|res:// /NewDatabase.ssdl|res://*/NewDatabase.msl;provider = System.Data.SqlClient; provider connection string =“Data Source = tcp:your.database.windows.net,1433; initial catalog = your; integrated security = False; User Id = your; Password = your; MultipleActiveResultSets = True; App = EntityFramework“”providerName =“System.Data.EntityClient”
感谢Microsoft在Azure上对EntityFramework数据库的文档记录不佳。
答案 3 :(得分:0)
您需要更改此行metadata=res:///NewDatabase.csdl|res:///NewDatabase.ssdl|res://*/NewDatabase.msl;
到
metadata=res://*/;