更新数据库上的 ConnectionString 属性尚未初始化

问题描述 投票:0回答:3

在包管理器控制台中,我已针对 azure 上的数据库运行命令更新数据库,但出现错误,提示 ConnectionString 属性尚未初始化。

我对本地数据库做了同样的事情,一切都很顺利。在我的网络配置中,我更改了连接字符串以匹配我的天蓝色数据库,这是我的数据库上下文的样子:

 public class MadLabsDatabaseContext : IdentityDbContext<User>
{
    public MadLabsDatabaseContext()
        : base("DefaultConnection")
    {
        Configuration.LazyLoadingEnabled = true;
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<IdentityUser>()
           .ToTable("AspNetUsers");
        modelBuilder.Entity<User>()
            .ToTable("AspNetUsers");
    }
}

这是 web.config 中的连接字符串:

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=tcp:serverName.database.windows.net,1433;Database=madLabs_db;User ID=username;Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

这是我的包管理器控制台代码:

Update-database -ConnectionString "Data Source=tcp:serverName.database.windows.net,1433;Database=madLabs_db;User ID=userName;Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;" -ConnectionProviderName "System.Data.SqlClient"

为什么我会收到此错误?

c# asp.net-mvc azure asp.net-web-api
3个回答
15
投票

我想我已经在这里回答了这个问题。

我猜你有

ASP Identity 2.0.0,由于某种原因,这会导致 Azure 上出现问题,但本地不会出现问题,但修复很容易。

尝试将代码更改为:

public class MadLabsDatabaseContext : IdentityDbContext<User> { // This is the offending line // Add throwIfV1Schema: false public MadLabsDatabaseContext() : base("DefaultConnection", throwIfV1Schema: false) { Configuration.LazyLoadingEnabled = true; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<IdentityUser>() .ToTable("AspNetUsers"); modelBuilder.Entity<User>() .ToTable("AspNetUsers"); } }

现在尝试发布到 Azure,它应该可以工作。


1
投票
似乎

public MadLabsDatabaseContext() : base("DefaultConnection")

没有找到正确的连接字符串。我将逐步执行该代码,以确保使用您期望的连接字符串创建上下文。  

这可能有助于解释它

如何修复“ConnectionString 属性尚未初始化”

所以使用

ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString

 而不是 
"DefaultConnection"

    


0
投票
我在从包管理器控制台运行

Update-Database

时遇到了这个问题。

我尝试添加

-StartupProject <project-name>

 参数,我在用户机密中配置了连接字符串。它仍然抱怨连接字符串未初始化。

解决方案是将连接字符串添加到

appsettings.json

中,因为Update-Database在用户机密或appsettings.development.json中找不到它。

© www.soinside.com 2019 - 2024. All rights reserved.