Azure发布数据库第一连接字符串不工作

本文关键字:连接 字符串 工作 数据库 Azure | 更新日期: 2023-09-27 18:06:42

我已经完成了在azure门户上首先使用数据库发布web应用程序的步骤。

然而,当我发布时,我得到这个错误消息:

使用数据库优先和模型的T4模板生成的代码如果在代码优先模式下使用,首次开发可能无法正常工作。要继续使用"数据库优先"或"模型优先",请确保实体的配置文件中指定框架连接字符串执行应用程序。要使用这些从数据库优先或模型优先,与代码优先添加任何额外的使用属性或DbModelBuilder API配置,然后删除引发此异常的代码。

我在网上的连接字符串。通过publish:

修改后的配置
<add name="MySiteEntities" connectionString="metadata=res://*/MySite.csdl|res://*/MySite.ssdl|res://*/MySite.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=tcp:**********.database.windows.net,****;initial catalog=MySite;user id=username@**********;password=*******;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

My context(由edmx生成):

public partial class MySiteEntities : DbContext
{
    public MySiteEntities()
        : base("name=MySiteEntities")
    {
    }
...

我很困惑,因为它似乎是实体框架试图首先使用代码,而不是数据库。

更新:我只是尝试在本地使用相同的连接字符串,web应用程序似乎运行良好。web应用程序可以很好地连接到远程数据库。只有当我发布到azure时才会失败。

Azure发布数据库第一连接字符串不工作

阅读我对实体框架在本地工作但不在azure上工作的类似问题的回答。

如果你犯了和我一样的"错误",这就是发生的事情…azure部署的应用程序没有找到你的连接字符串"MySiteEntities"在你的web.config。相反,在您创建Azure网站(或云服务或其他)时,您创建了一个关联的Azure SQL数据库,并将其连接字符串赋予完全相同的名称"MySiteEntities"。后一个连接字符串是一个没有模型/数据库优先元数据引用的"普通"连接字符串,因此EF将其视为代码优先连接,然后EF会抱怨冲突。

应该是:

        <connectionStrings>
            <add name="MyDatabaseModelEntities" 
                       connectionString="metadata=res://*/MyDBModel.csdl|res://*/MyDBModel.ssdl|res://*/MyDBModel.msl;
                       provider=System.Data.SqlClient;
                       provider connection string=&quot;
                       Data Source=<provideServerName>.database.windows.net;
                       Initial Catalog=MyDatabase;
                       Integrated Security=False;
                       User ID=<provideUserID>;
                       Password=providePassword>;
                       MultipleActiveResultSets=True;
                       Encrypt=True;
                       TrustServerCertificate=False&quot;" 
                       providerName="System.Data.EntityClient"/>
        </connectionStrings>

我在本地web上将连接字符串更改为远程(Azure)。配置,然后在发布和发布web.config期间删除所有设置的连接字符串。它重写了remove web.config。然后返回本地web上的连接字符串。配置到本地连接。