加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在microsoft azure上配置实体框架(Model First)?

发布时间:2020-12-14 03:54:32 所属栏目:Windows 来源:网络整理
导读:我在我的应用程序中使用EntityFramwok(代码优先),但由于某些原因,我必须将entityframwork approch更改为 Database First.我已成功在本地配置项目,当将代码发布到microsoft azure服务器并尝试在我的应用程序中登录时,它会引发异常:“上下文正在Code First模
我在我的应用程序中使用EntityFramwok(代码优先),但由于某些原因,我必须将entityframwork approch更改为 Database First.我已成功在本地配置项目,当将代码发布到microsoft azure服务器并尝试在我的应用程序中登录时,它会引发异常:“上下文正在Code First模式中使用,代码是从EDMX文件生成的数据库优先或模型优先开发.这将无法正常工作.要解决此问题,请不要删除引发此异常的代码行.如果您希望使用Database First或Model First,请确保Entity Framework连接字符串是包含在启动项目的app.config或web.config中.如果您要创建自己的DbConnection,请确保它是EntityConnection而不是其他类型的DbConnection,并且您将其传递给其中一个带有DbConnection的基本DbContext构造函数.要了解有关Code First,Database First和Model First的更多信息,请参阅此处的Entity Framework文档:http://go.microsoft.com/fwlink/?LinkId = 394715“
我在谷歌上搜索过它但找不到任何线索,似乎我是唯一一个得到这个例外的人:(有没有人知道这个.我是azure的新手所以不知道如何改变那里的entityframwork方法任何帮助或建议将不胜感激:)

解决方法

我刚刚将一个数据库第一个项目部署到Azure并遇到了相同的错误.现在谷歌搜索时的信息似乎比你提出这个问题时要多得多.无论如何,对我而言,这一切都不是完全有意义的,我不得不尝试提出解决方案.

这是我的情景:
我的数据库第一个数据库也托管在Azure上,Azure推荐用于ADO.NET的连接字符串是我放在Web.Release.config转换条目中的.我有两个连接字符串,一个是默认连接,另一个是用于db第一个项目的连接字符串.解决方案是使用来自Web.config连接字符串的相同(正常运行)内容,并仅使用Azure数据库连接字符串替换内部部分.我被剪掉了过去很开心,只是消除了导致错误的连接字符串的全部内容.

连接字符串中的信息批次特定于您的项目以及您在项目中创建的数据库第一个实体.以下是我的几个例子:

你是Web.config应该有你的本地开发环境的连接字符串(这些是由DB第一个向导为你创建的机会):

<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连接字符串转换(只是首先发布数据库,但你需要为你拥有的其他任何东西做类似的事情):

<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之后遇到这个错误:去检查你的转换并确保你没有删除所有重要的元数据!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读