ASP.NET Identity OWIN with Entity Framework将以下表添加到数据库中:
ASPNetUsers
ASPNeRoles
ASPNeTokens
ASPNetUserClaims
ASPNetUserLogins
ASPNetUserManagements
ASPNetUserRoles
ASPNetUserSecrets
有人可以向我解释这些名字的来源吗?我搜索了我的解决方案和项目文件,看不到它们的参考。这些名称是否可自定义(我的意思是在它们生成时 - 而不是在它们存在于数据库中之后)?
我尝试了一个实验,并在我的ASP.NET MVC 5解决方案中添加了一个新项目。然后我使用NuGet来安装Microsoft ASP.NET Identity Owin。然后,我将Entity Framework 6添加到该项目,并创建了一个继承自DbContext的datacontext类。此时,我从程序包管理器控制台运行了“enable-migrations”命令。这创建了一个Migrations文件夹和一个迁移类以及一个Configuration.cs类。到现在为止还挺好。但是当我运行“add-migration initial”命令时,没有生成上面提到的ASP.NET身份表。
然而,当我在我的MVC项目中遵循相同的步骤时, add-migration命令确实生成了上面的表。在我的MVC中 项目,我的App_Start文件夹中有一个startup.auth.cs类, 然而。这似乎是关键,但我只是不确定因为 有些东西是“自我魔法地”发生的,我显然不会 了解。 startup.auth.cs文件如下所示:
using Microsoft.AspNet.Identity;
using Microsoft.Owin;
using Microsoft.Owin.Security.Cookies;
using Owin;
namespace AspNetIdentity
{
public partial class Startup
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}
}
}
如果我希望能够从我的MVC项目以外的项目迁移ASP.NET Identity表,我该怎么办?
答案 0 :(得分:0)
注意:这些表名称看起来来自Identity 1.0的预发布版本,但简短的回答是,它们来自IdentityDbContext.OnModelCreating,它指定了各种实体的表名。
您的IdentityDbContext通常会传递到UserStore。无论您在何处创建UserManager,都可能在构建UserStore和IdentityDbContext的位置。请注意,UserStore的默认构造函数创建一个新的IdentityDbContext,它使用“DefaultConnection”字符串,这可能是您没有看到的神奇步骤。
IdentityDbContext
protected override void OnModelCreating(DbModelBuilder modelBuilder)