Azure:上下文在Code First模式下使用,代码是从EDMX生成的

时间:2015-07-07 16:00:29

标签: database azure entity-framework-6 connection-string

我在本地运行的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=&quot;data source=xx;initial catalog=xx;persist security info=True;user id=xx;password=xx;MultipleActiveResultSets=True;application name=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

我使用的是EF 6.1.3,MVC5

4 个答案:

答案 0 :(得分:7)

我遇到了同样的错误消息,并设法在this post here on StackOverflow的帮助下解决了这个问题。

在Azure管理/网络应用程序/ [您的网络应用程序] /配置/连接字符串中,确保3件事:

  1. 连接字符串与项目中的连接字符串同名。

  2. 连接字符串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;"

  3. 第三列(默认设置为SQL数据库)设置为自定义

答案 1 :(得分:0)

找到一个比添加Azure连接字符串中的所有内容更简单的解决方案。我刚刚更改了Azure中的连接字符串名称。它工作..

答案 2 :(得分:0)

我不得不处理同样的问题。解决方案是

  1. 通过FTP连接到网站
  2. 编辑web.config
  3. 添加以下连接字符串:

    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”

  4. 感谢Microsoft在Azure上对EntityFramework数据库的文档记录不佳。

答案 3 :(得分:0)

您需要更改此行metadata=res:///NewDatabase.csdl|res:///NewDatabase.ssdl|res://*/NewDatabase.msl;

metadata=res://*/;