[英]ASP.NET MVC identification tables creation
因此,我有一个带有自定义本地数据库的项目(通过模型优先方法创建)。 我需要在此创建标识表(例如asp_users
, asp_roles
,我不记得它们的确切调用方式了,但我希望您有主意)。 据我所知,应该在首次注册时创建它们,但是不会发生:
我在SQL Management Studio中也看不到这些表。 我的连接字符串(通过数据库自动创建):
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20170504122316.mdf;Initial Catalog=aspnet-WebApplication1-20170504122316;Integrated Security=True" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=VADIM-PC;initial catalog=PIT_3_Project_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
第一个连接字符串是真正的默认字符串,第二个是我的。
有趣的部分是-身份验证工作正常,我可以注册和登录,但看不到我的代码可以在默认本地数据库中使用的地方。
UPD:对不起,我没有更改此行:
public ApplicationDbContext()
: base("DBModelContainer", throwIfV1Schema: false)
{
}
我已将DBModelContainer
更改为DefaultConnection
,现在遇到此错误(尝试注册时)
实体类型ApplicationUser不是当前上下文模型的一部分。
说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
您应该使用代码优先迁移来创建这些表。
第一步:取消注释第一个默认连接字符串,将其重命名为例如DefaultAuthConnection并像这样修改它(对于本地数据库)。
<add name="DefaultAuthConnection" connectionString="data source=.;initial catalog=PIT_3_Project_DB;persist security info=True;" providerName="System.Data.SqlClient" />
<add name="DefaultConnection" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=VADIM-PC;initial catalog=PIT_3_Project_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
第二步:打开IdentityModels.cs并按如下所示修改ApplicationDBContext
:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultAuthConnection", throwIfV1Schema: false)
{
}
}
第三步:打开Package Manager控制台 (“查看”->“其他Windows”->“ Package Manager控制台”)并编写以下步骤:
从现在开始,您可以在本地数据库中看到身份验证表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.