MVC5 ApplicationUser不是当前上下文的模型的一部分

时间:2014-02-16 22:08:28

标签: asp.net-mvc-4 asp.net-mvc-5

我正在尝试在现有SQL Server 2008数据库上创建成员资格表,并使用它而不是在Visual Studio中为我创建的默认数据库,但在注册帐户时会出错。有没有办法像之前的aspnet_regsql一样手动创建表?

错误: 实体类型ApplicationUser不是当前上下文的模型的一部分

我想出了答案。 applicationUser不喜欢使用数据库第一种方法创建的连接字符串。您需要使用标准连接字符串。

2 个答案:

答案 0 :(得分:5)

在您的IdentityModel.cs

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

在WebConfig中,使用2个不同的连接字符串,一个用于ApplicationDbContext,和 他们的其他数据库首先是.edmx设置:

<add name="DefaultConnection" providerName="System.Data.SqlClient"                 connectionString="data source=(local); Initial Catalog=StoreDB; Integrated Security=SSPI;" />


<add name="StoreEntities" connectionString="metadata=res://*/Models.StoreDB.csdl|    res://*/Models.StoreDB.ssdl|res://*/Models.StoreDB.msl;provider=System.Data.SqlClient;provider connection     string=&quot;data source=(local);initial catalog=STOREDB;integrated     security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;"     providerName="System.Data.EntityClient" />

答案 1 :(得分:0)

以下是一些有用的细节:

我遇到了同样的问题。我正在使用EDMX文件进行数据库优先开发。如果您使用在以下位置添加EDMX文件时生成的连接字符串:base(“EDMXConnString”),则很可能会出现此问题。

我通过创建指向ASP.NET标识表所在的数据库的标准连接字符串来修复此问题。

<add name="MyConnString" connectionString="Data Source=server; Initial Catalog=db_name; User ID=user_id; Password=password; Connect Timeout=60;" providerName="System.Data.SqlClient" />

然后在:base中使用该连接字符串,它就可以了!

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