gpt4 book ai didi

azure - 如何在microsoft azure上配置 Entity Framework (模型优先)?

转载 作者:行者123 更新时间:2023-12-05 01:03:17 24 4
gpt4 key购买 nike

我在我的应用程序中使用EntityFramwok(代码优先),但由于某种原因,我必须将entityframwork方法更改为数据库优先。我已在本地成功配置项目,当将代码发布到 microsoft azure 服务器并尝试登录我的应用程序时,它会引发异常:“上下文正在 Code First 模式下使用从 EDMX 生成的代码文件用于数据库优先或模型优先开发。这将无法正常工作。要解决此问题,请勿删除引发此异常的代码行。如果您希望使用数据库优先或模型优先,请确保 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 的新手,所以不知道如何更改那里的 Entity Framework 方法.任何帮助或建议将不胜感激:)

最佳答案

我刚刚将数据库第一个项目部署到 Azure 并遇到了相同的错误。现在谷歌搜索时似乎比你问这个问题时有更多的信息。无论如何,这些对我来说都不完全正确,我必须尝试找出解决方案。

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

连接字符串中的很多信息特定于您的项目以及您在项目中创建的数据库优先实体。以下是我所掌握的几个例子:

您的 Web.config 应该具有用于​​本地开发环境的连接字符串(这些连接字符串很可能是由数据库优先向导为您创建的):

    <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 连接字符串如何以一堆有关数据库模型的元数据开始。这个东西很重要!!

接下来是正确的 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 后遇到此错误:请检查您的转换并确保您没有删除所有重要的元数据!

关于azure - 如何在microsoft azure上配置 Entity Framework (模型优先)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24928522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com