繁体   English   中英

EF代码优先迁移的ASP.NET身份DbContext问题

[英]ASP.NET Identity DbContext Issue with EF Code First Migrations

EDIT2:我使用此“数据源=(LocalDB)\\ MSSQLLocalDB”作为连接字符串,并且一切正常。 我猜我在用sqlexpress做一些愚蠢的事情。


我正在尝试根据本教程使用ASP.NET(4.5)Identity(2.2)和EF(6)Code First迁移为用户创建一个简单的数据库

仅当ApplicationDbContext从IdentityDbContext继承时,才会发生此问题。

因此,首先,我创建一个空的asp.net项目。 然后为用户提供Entity类:

using Microsoft.AspNet.Identity.EntityFramework;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace AspNetIdentity.Infrastructure
{
  public class ApplicationUser : IdentityUser
  {
    [Required]
    [MaxLength(100)]
    public string FirstName { get; set; }

    [Required]
    [MaxLength(100)]
    public string LastName { get; set; }

    [Required]
    public byte Level { get; set; }

    [Required]
    public DateTime JoinDate { get; set; }

  }
}

然后,我创建DbContext类:

   public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {

    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

}

到现在为止还挺好。 现在是问题所在:我将连接字符串添加到web.config中,如下所示

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data      
  Source=.\sqlexpress;Initial Catalog=AspNetIdentity;Integrated    
  Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>

当我跑步时

enable-migrations

我收到以下错误:

访问数据库时发生错误。 这通常意味着与数据库的连接失败。 检查连接字符串是否正确,是否使用了适当的DbContext构造函数来指定它或在应用程序的配置文件中找到它。 有关DbContext和连接的信息,请参见http://go.microsoft.com/fwlink/?LinkId=386386 有关失败的详细信息,请参见内部异常。

如果我尝试完全相同的事情,但使用正常的DbContext,一切都会按预期进行。 有什么想法我可能做错了吗? 这东西现在困扰我好几天了。


EDIT1:下面是控制台中的完整输出,这是巨大的,因此我将它们附加为图像,我希望可以。

output_first_part output_second_part

如果错误在那里太明显,对不起,我是新手:)

通常,关于SQL Express,有两点不可忘记:启用TCP / IP协议+启用并启动SQL Browser Windows服务。 防火墙也可能是原因。 请查看本文是否对您有帮助。

在Visual Studio中,按Control + Alt + S并检查“是否在数据连接中看到您的Db”,也在解决方案资源管理器中单击“显示所有文件”,然后检查App_Data文件夹。 如果看不到您的数据库或您看到不同的数据库名称,则问题出在您的连接字符串中。 如果您只是在测试数据库连接,并且没有重要数据,请尝试删除migrations文件夹,并在连接字符串中重命名基本连接和默认连接。 在启用迁移之后,添加迁移,然后更新数据库。 希望它可以帮助干杯!

我是ASP.NET的新手,但是我已经修改了connectionStrings以使用localdb:

<connectionStrings>
    <add name="DefaultConnection" 
      connectionString="Server=(localdb)\v11.0;Integrated Security=true;"
      providerName="System.Data.SqlClient" />
</connectionStrings>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM