EDIT2: 我使用了这个"数据源=(LocalDB)\ MSSQLLocalDB"对于连接字符串,一切都按预期工作。我想我用sqlexpress做了一些蠢事。
我尝试使用ASP.NET(4.5)身份(2.2)和EF(6)Code First迁移为用户创建一个简单的数据库,基于this tutorial
仅当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: 下面是控制台中的完整输出,这是巨大的所以我将它们作为图像附加,我希望没关系。
如果那里的错误太明显了,我很抱歉,但我是新手:)
答案 0 :(得分:0)
SQL Express通常有两件事不要忘记:启用TCP / IP协议+启用并启动SQL Browser Windows服务。防火墙也可能是原因。请查看article是否可以帮助您。
答案 1 :(得分:0)
在Visual Studio按下控件+ alt + s并检查你在数据连接中看到你的Db, 也可以在Solution explorer中单击“显示所有文件”并检查App_Data文件夹。 如果您没有看到您的数据库或您看到不同的数据库名称,则问题出在您的连接字符串中。 如果您只是测试数据库连接并且没有重要数据,请尝试删除迁移文件夹并重命名连接字符串中的基本连接和默认连接。 启用迁移后,添加迁移,然后更新数据库。 希望它有助于干杯!
答案 2 :(得分:0)
我是ASP.NET新手,但我修改了connectionStrings以使用localdb:
Script-Migration -from 0