C# Asp标识和特定于应用程序的模型
我刚刚开始一个使用ASP.NETIdentity 2的新项目。它为标识表生成一个现成的数据库,这很好。我的困惑是我应该把应用程序特定的表放在哪里?我是为它们创建一个完全独立的DbContext&数据库,还是将所有表捆绑到一个数据库中是最佳做法C# Asp标识和特定于应用程序的模型,c#,asp.net-mvc,asp.net-identity,C#,Asp.net Mvc,Asp.net Identity,我刚刚开始一个使用ASP.NETIdentity 2的新项目。它为标识表生成一个现成的数据库,这很好。我的困惑是我应该把应用程序特定的表放在哪里?我是为它们创建一个完全独立的DbContext&数据库,还是将所有表捆绑到一个数据库中是最佳做法 谢谢通常,您会扩展该类,并将特定于应用程序的表放到该上下文中。这看起来类似于以下内容 public class BlogContext : IdentityDbContext<ApplicationUser> { public BlogCo
谢谢通常,您会扩展该类,并将特定于应用程序的表放到该上下文中。这看起来类似于以下内容
public class BlogContext : IdentityDbContext<ApplicationUser>
{
public BlogContext()
: base("BlogConnection")
{
}
public DbSet<Post> Posts { get; set; }
public DbSet<Comment> Comments { get; set; }
}
公共类BlogContext:IdentityDbContext
{
公共博客上下文()
:base(“博客连接”)
{
}
公共DbSet Posts{get;set;}
公共DbSet注释{get;set;}
}
在一些边缘情况下,最好通过标识将应用程序数据与所持有的数据分开。一种情况可能是,应用程序数据与用户数据无关,您希望将它们分开。尽管如此,在为应用程序数据创建单独的上下文时,您应该记住,您必须处理两个上下文,这有时会很痛苦。如果您使用的是asp.net MVC5 identity 2,则IdentityModels.cs中已经存在ApplicationDbContext。因此您可以使用它
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("ApplicationDbContext", throwIfV1Schema: false)
{
}
public DbSet<Department> Departments { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“ApplicationDbContext”,throwifvv1schema:false)
{
}
公共数据库集部门{get;set;}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
}
但这是最佳做法吗?我倾向于把两者分开。这似乎是一个更干净的解决方案。我不确定这是否是最佳做法。请检查此链接@James您当然可以保留2个上下文,但这会增加代码的开销。迁移变得越来越困难,您只需要维护更多的代码。如果您有将标识上下文分开的好处,那么就这样做,否则只有一个上下文。将ApplicationUser移动到我的域层似乎是使用从IdentityUser继承的一个上下文的主要障碍。这将要求我的域层具有对Microsoft.AspNet.Identity的引用,这在我看来是不正确的。如果使用两个独立的数据库,则不会出现此问题。