【发布时间】:2018-04-21 10:45:30
【问题描述】:
我有一个包含我的应用程序表的现有数据库,我即将使用 MVC5 为我的应用程序构建一个新版本。我决定在我的应用程序中使用 AspNet Identity 框架。
我在创建项目时使用的 Visual Studio 模板添加了一个文件“IdentityModel.cs”和类
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
}
所以我可以使用如下代码访问表用户、角色和其他 AspNet 身份表:
var context = new ApplicationDbContext();
context.Users.ToList();
由于 Microsoft 给类“ApplicationDbContext”(而不是:IdentityDbContext)命名,我想知道该类是否应该用作与 AspNet Identity 框架无关的所有其余现有表的“访问器”?
如果没有“ApplicationDbContext”类的通用名称,我只会使用我刚刚添加到解决方案中的实体框架项目来访问我的应用程序的其他表,但我想知道什么是“最佳实践”。要使用相同的 AspNet Identity ApplicationDbContext 访问器(以及如何使用?)或使用两个 Db 访问器,一个 AspNet Identity 表和一个用于我为其余表创建的实体框架(Db First)。
对我在单独的 EntityFramework edmx 文件中拥有的所有表、AspNet 标识和所有其余表使用相同的 dbContext 看起来更符合逻辑。如何在一个 dbContext 中同时使用它们?
【问题讨论】:
-
使用单一上下文。将身份框架表添加到现有上下文或将表添加到生成的上下文。这没什么区别。如果您不喜欢上下文的名称,请重命名它。模板只是生成一个起点,不是正典。
-
@CraigW。 - 感谢您的评论,我正在使用实体框架 edmx 文件来测试应用程序表。如何使用与 asp.net 身份相同的数据库上下文?