【发布时间】:2015-02-15 19:47:07
【问题描述】:
我刚刚开始了一个使用 ASP .Net Identity 2 的新项目。它为 Identity 表生成了一个开箱即用的数据库,这很好。我的困惑是我应该把我的应用程序特定的表放在哪里?我是为它们创建一个完全独立的 DbContext 和数据库,还是最好将所有表简单地捆绑到一个数据库中?
谢谢
【问题讨论】:
标签: c# asp.net-mvc asp.net-identity
我刚刚开始了一个使用 ASP .Net Identity 2 的新项目。它为 Identity 表生成了一个开箱即用的数据库,这很好。我的困惑是我应该把我的应用程序特定的表放在哪里?我是为它们创建一个完全独立的 DbContext 和数据库,还是最好将所有表简单地捆绑到一个数据库中?
谢谢
【问题讨论】:
标签: c# asp.net-mvc asp.net-identity
如果您使用的是 asp.net MVC5 身份 2,则 ApplicationDbContext 已经存在于 IdentityModels.cs 中。所以您可以使用它。
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("ApplicationDbContext", throwIfV1Schema: false)
{
}
public DbSet<Department> Departments { get; set; }
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
【讨论】:
通常您会扩展IdentityDbContext 类并将您的应用程序特定表放入此上下文中。这看起来类似于以下内容
public class BlogContext : IdentityDbContext<ApplicationUser>
{
public BlogContext()
: base("BlogConnection")
{
}
public DbSet<Post> Posts { get; set; }
public DbSet<Comment> Comments { get; set; }
}
在某些极端情况下,最好将您的应用程序数据与 Identity 持有的数据分开。一种情况可能是您的应用程序数据与您的用户数据不相关并且您希望将它们分开。不过,在为您的应用程序数据创建单独的上下文时,您应该记住,您必须处理两个上下文,这有时会很痛苦。
【讨论】: