2017-05-04 91 views
0

所以我有一个项目与我的自定义本地数据库(由模型优先方法创建)。我需要在那里创建识别表(如asp_users,asp_roles,我不记得他们叫什么名字,但我希望你有这个想法)。据我所知,他们应该先注册被创建,但它不会发生:ASP.NET MVC标识表创建

enter image description here

我看不到在SQL Management Studio中的表无论是。 我的连接字符串(使用DB自动创建):

<!--<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=&quot;data source=VADIM-PC;initial catalog=PIT_3_Project_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

第一个连接字符串是真正默认情况下,第二个是我的。

有趣的部分是 - 验证工作正常,我可以注册和登录,并且我没有看到我的代码甘蔗与默认的本地数据库一起使用。

UPD:对不起,我没有改变该行:

public ApplicationDbContext() 
    : base("DBModelContainer", throwIfV1Schema: false) 
    { 
    } 

我已经改变了DBModelContainerDefaultConnection,现在我得到这个错误(当我尝试注册)

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

描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。

回答

2

您应该使用代码优先迁移创建这些表。

第一步: 取消注释第一默认连接字符串,将其重命名例如DefaultAuthConnection和修改这样的(用于本地DB)。

<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=&quot;data source=VADIM-PC;initial catalog=PIT_3_Project_DB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

第二步:打开IdentityModels.cs和修改ApplicationDBContext这样的:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("DefaultAuthConnection", throwIfV1Schema: false) 
     { 
     } 
    } 

第三步:打开包管理器控制台(查看 - >其他Windows的>包管理器控制台)并写入以下步骤:

  1. 启用的迁移-ContextTypeName WebApplication1.ApplicationDbContext
  2. 添加迁移初始化
  3. 更新,数据库

从现在起,你可以看到在您的本地数据库验证表。

+0

出现此错误'上下文类型'aspnet-WebApplication1。ApplicationDbContext“在第3步中的程序集”WebApplication1“中未找到,点1. – user7803907

+0

它是您的应用程序名称。我写了一个例子。因此,如果您的应用程序名称是_WebApplication1_,则可以使用'Enable-Migrations -ContextTypeName WebApplication1.ApplicationDbContext'。 – kkakkurt

+0

我的应用程序是'WebApplication1',但是我仍然不断收到此错误。 – user7803907