Exc*_*Cat 6 c# asp.net-mvc asp.net-mvc-5
我是MVC 5的新手,我正在尝试在创建的新数据库上下文中配置Individual User Auth,但ApplicationDBContext没有在我的新数据库中创建AspNetUser表.有人能指出我正确的方向吗?
错误
The entity type ApplicationUser is not part of the model for the current context.
Run Code Online (Sandbox Code Playgroud)
IdentityModel.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("MyEntities", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Run Code Online (Sandbox Code Playgroud)
Web.config文件
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVC5.WebSite-20150723075149.mdf;Initial Catalog=aspnet-MVC5.WebSite-20150723075149;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="MyEntities" connectionString="metadata=res://*/Models.UserModel.csdl|res://*/Models.UserModel.ssdl|res://*/Models.UserModel.msl;provider=System.Data.SqlClient;provider connection string="data source=devserver;initial catalog=MyEntities;user id=user;password=pass;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我知道MVC应该自动神奇地创建UserStore和相关表,但显然我在这里完成了一些非常愚蠢的事情.任何帮助深表感谢.
您是否使用代码优先迁移?
通常,您必须启用迁移、创建新迁移并应用它们才能创建您的数据库。
进入包管理器控制台并执行以下命令
enable-migrations
add-migration initial
update-database
Run Code Online (Sandbox Code Playgroud)
编辑
如果你不想使用迁移,你也可以把它放在你的上下文的构造函数中:
Database.SetInitializer<ApplicationDbContext>(new DropCreateDatabaseIfModelChanges<ApplicationDbContext>());
Run Code Online (Sandbox Code Playgroud)
但是每次重新创建数据库时,您都会丢失数据
好吧,我做的事情很愚蠢.基本上尝试让ApplicationDbContext使用由EF创建的连接.不是正确的方式.为了让表格'自动神奇地'创建.我需要在连接到所需数据库的Web.config中添加一个普通的连接字符串,然后在IdentityModel.cs中设置它
Web.config文件
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MVC.WebSite-20150723075149.mdf;Initial Catalog=aspnet-MVC.WebSite-20150723075149;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="MyConnection" connectionString="Data Source=devserver;initial catalog=MyCatalog;user id=user;password=pass;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
IdentityModel.cs
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("MyConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Run Code Online (Sandbox Code Playgroud)
希望,这有助于某人.感谢所有帮助过的人.