ConnectionString属性尚未在update-database上初始化

时间:2014-04-04 14:28:49

标签: c# asp.net-mvc azure asp.net-web-api

在包管理器控制台中,我在azure上对我的数据库运行命令更新数据库,但是我收到错误,说ConnectionString属性尚未初始化。

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

 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>

这是我的Package Manager控制台代码:

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"

为什么我收到此错误?

2 个答案:

答案 0 :(得分:15)

我认为我已回答了这个问题here.

我猜您有 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 :(得分:1)

似乎public MadLabsDatabaseContext() : base("DefaultConnection")找不到正确的连接字符串。我将逐步完成该代码,以确保使用您期望的连接字符串创建上下文。

这可能有助于解释它How to fix "The ConnectionString property has not been initialized"

因此请使用ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString代替"DefaultConnection"