如何在微软azure上配置实体框架(模型优先)



我在我的应用程序中使用entityframwork (code First),但由于某些原因,我必须将entityframework方法更改为Database First。我已经在本地成功配置了项目,当发布代码到微软azure服务器并试图登录我的应用程序时,它抛出了一个异常:"The context is being used in Code First mode with code that was generated from an EDMX file for either Database First or Model First development. This will not work correctly. To fix this problem do not remove the line of code that throws this exception. If you wish to use Database First or Model First, then make sure that the Entity Framework connection string is included in the app.config or web.config of the start-up project. If you are creating your own DbConnection, then make sure that it is an EntityConnection and not some other type of DbConnection, and that you pass it to one of the base DbContext constructors that take a DbConnection. To learn more about Code First, Database First, and Model First see the Entity Framework documentation here: http://go.microsoft.com/fwlink/?LinkId=394715"。我在谷歌上搜索过,但找不到任何线索,似乎我是唯一一个得到这个例外的人:(有人知道这个吗?)我是azure的新手,所以不知道如何改变那里的实体框架方法。任何帮助或建议将不胜感激:)

我刚刚在Azure上部署了一个数据库优先项目,并遇到了相同的错误。似乎现在谷歌上的信息比你问这个问题的时候要多得多。无论如何,这些对我来说都不是完全正确的,我必须通过实验来想出解决方案。

这是我的场景:我的数据库第一个DB也托管在Azure上,Azure为ADO推荐的连接字符串。. NET是我放在Web.Release.config转换条目中的内容。我有两个连接字符串,一个是默认连接,另一个是用于数据库的第一个项目。解决方案是使用来自Web的相同(功能)内容。配置连接字符串,并且只将内部部分替换为Azure db连接字符串。我被割伤了。过去一开始很高兴,只是删除了连接字符串的全部内容,导致错误。

连接字符串中的许多信息是特定于您的项目和您在项目中创建的db first实体的。以下是我手头上的几个例子:

你网络。配置应该有本地开发环境的连接字符串(很可能这些是由DB first向导为您创建的):

    <configuration>
    ...
      <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)v11.0;AttachDbFilename=|DataDirectory|aspnet-WebRole1-20150218073037.mdf;Initial Catalog=aspnet-WebRole1-20150218073037;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="DbFirstModelEntities" connectionString="metadata=res://*/Models.DbFirstModel.csdl|res://*/Models.DbFirstModel.ssdl|res://*/Models.DbFirstModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(localdb)ProjectsV12;initial catalog=DbFirstData;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
...
    </configuration>

注意dbfirst连接字符串是如何以一堆关于db模型的元数据开始的。这些东西很重要!!

接下来是正确的Web.Release.config连接字符串转换(只是发布DB第一个,但您需要为您拥有的其他任何类似的事情):

<connectionStrings>
  <add name="DbFirstModelEntities"
       connectionString="metadata=res://*/Models.DbFirstModel.csdl|res://*/Models.DbFirstModel.ssdl|res://*/Models.DbFirstModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Server=tcp:<yourdatabesserver>.database.windows.net,1433;Database=DbFirstData;User ID=<user>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;"
       providerName="System.Data.EntityClient"
       xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

说来话长,如果你在发布到azure后遇到这个错误:去检查你的转换并确保你没有删除所有重要的元数据!

在azure服务器上配置您的网站和数据库时,您必须定义一个连接字符串和连接字符串的名称不应该与您的web中的连接字符串名称相同。配置文件。我只是在我的web中重命名了连接字符串名称。配置和问题解决。:)

相关内容

  • 没有找到相关文章

最新更新