我应该将啥 DbContext 与 EntityFrameworkCore 一起使用?

     2023-02-16     266

关键词:

【中文标题】我应该将啥 DbContext 与 EntityFrameworkCore 一起使用?【英文标题】:What DbContext should I use with EnityFramework Core?我应该将什么 DbContext 与 EntityFrameworkCore 一起使用? 【发布时间】:2019-04-12 05:45:39 【问题描述】:

我有带有 EFCore 的 .Net Core 应用程序。我创建了继承自 IdentityDbContext 的 ApplicationDbContext 类。

我想使用 AspNetUsers DbSet 进行授权和身份验证。然后在 powershell 控制台中,我输入了“更新数据库”,在我的 PostgreSQL 数据库中,我看到了一些表,包括 AspNetRoles、AspNetUsers 等,但在项目中我只有空的 ApplicationDbContext。

那我该怎么办?我可以将 DB 中的所有实体构建为对象模型或扩展 IdentityDbContext 并以某种方式将属性添加到 aspNetUsers。此外,如果我搭建实体,我将获得另一个新的 DbContext,其中包含所有 AspNetUsers 和其他人。

【问题讨论】:

Entity Framework 使用DbContext,所有IdentityDbContext 都是继承DbContext 的实现,以处理内置的Microsoft 授权和身份验证机制。那么你应该使用哪个DbContext 是什么意思? 根据您的要求和表的数量,您可以考虑创建多个 DbContext(s)。拥有God Context 会导致许多编程问题。 【参考方案1】:

如果您可以使用IdentityUser 的标准实现,那么只需从非通用IdentityDbContext 继承dbContext。 如果您想使用自定义 User 类为 Identity 创建 dbContext,您需要从通用抽象类 IdentityDbContext<T> 继承您的自定义 dbContext 类,其中 T 是您的自定义 User 实现。这个实现应该继承自 .NET IdentityUser 类已经提供的。 您还需要通过以下代码将 dbContext 与 Startup.cs 中的 Identity 关联起来:

services.AddIdentity<MyCustomUser, IdentityRole>()
                .AddEntityFrameworkStores<MyCustomSecurityContext>()...

我也不知道你为什么要直接使用你的身份上下文。通常所有与用户、角色、声明的工作都是通过隐藏实现并提供漂亮和清晰 API 的特定服务(例如 UserManager&lt;MyApplicationUser&gt;)完成的。您可以在需要的地方注入它们。

【讨论】:

我应该将啥作为参数传递给期望 NSError** 的方法?

】我应该将啥作为参数传递给期望NSError**的方法?【英文标题】:WhatshouldIpassasparametertoamethodexpectingaNSError**?我应该将什么作为参数传递给期望NSError**的方法?【发布时间】:2009-10-2613:56:21【问题描述】:我一直在为不使用对等... 查看详情

导入 tkinter 文件时,我应该将啥参数传递给“root”?

】导入tkinter文件时,我应该将啥参数传递给“root”?【英文标题】:WhatargumentshouldIbepassingto"root"whenimportingatkinterfile?导入tkinter文件时,我应该将什么参数传递给“root”?【发布时间】:2018-08-2104:28:45【问题描述】:这... 查看详情

我应该将啥对象传递给需要 Void 的函数!在参数中? (科特林)

】我应该将啥对象传递给需要Void的函数!在参数中?(科特林)【英文标题】:WhatobjectshouldIpasstoafunctionthatrequiresVoid!inaparameter?(Kotlin)我应该将什么对象传递给需要Void的函数!在参数中?(科特林)【发布时间】:2021-12-3111:35:08... 查看详情

我应该将啥类型添加到作为参数接收的类构造函数中?

】我应该将啥类型添加到作为参数接收的类构造函数中?【英文标题】:WhattypeIshouldaddtoclassconstructorreceivedasparameter?我应该将什么类型添加到作为参数接收的类构造函数中?【发布时间】:2020-03-2915:24:44【问题描述】:我正在Type... 查看详情

我应该使用 oauth2 jwt 授权将啥存储到数据库中?

】我应该使用oauth2jwt授权将啥存储到数据库中?【英文标题】:WhatshouldIstoreintodbwithoauth2jwtauthorization?我应该使用oauth2jwt授权将什么存储到数据库中?【发布时间】:2015-06-0103:48:15【问题描述】:我想使用OAuthJWT令牌进行授权。由... 查看详情

将 DbContext 与依赖注入一起使用

】将DbContext与依赖注入一起使用【英文标题】:UsingDbContextwithdependencyinjection【发布时间】:2021-02-0904:13:45【问题描述】:我在MVVM架构中构建WPF应用程序。按下按钮应该给我DataGrid上数据库中的数据。应用程序正确构建,我可以... 查看详情

我应该将啥传递给 SQLitePCL.raw.SetProvider() 以避免“'Microsoft.Data.Sqlite.SqliteConnection' 的类型初始化程序引发异常”

】我应该将啥传递给SQLitePCL.raw.SetProvider()以避免“\\\'Microsoft.Data.Sqlite.SqliteConnection\\\'的类型初始化程序引发异常”【英文标题】:WhatshouldIpasstoSQLitePCL.raw.SetProvider()toavoid"Thetypeinitializerfor\'Microsoft.Data.Sqlite.SqliteConnec 查看详情

应该将啥模块实例传递给 CreateCursor 方法?

】应该将啥模块实例传递给CreateCursor方法?【英文标题】:WhatmoduleinstanceshouldbepassedtoCreateCursormethod?应该将什么模块实例传递给CreateCursor方法?【发布时间】:2016-03-1120:17:13【问题描述】:CreateCursor函数将HINSTANCE作为第一个参数... 查看详情

我应该如何将 DbContext 实例注入 IHostedService?

】我应该如何将DbContext实例注入IHostedService?【英文标题】:HowshouldIinjectaDbContextinstanceintoanIHostedService?【发布时间】:2018-06-3007:40:41【问题描述】:问题我应该如何将DbContext实例注入(使用标准依赖注入)到IHostedService中?我尝... 查看详情

应该将啥传递给 if() 以打印“Hello World”?

】应该将啥传递给if()以打印“HelloWorld”?【英文标题】:Whatshouldbepassedintoif()toprint\'HelloWorld\'?应该将什么传递给if()以打印“HelloWorld”?【发布时间】:2012-05-1220:24:31【问题描述】:应该将什么传递给if()以将输出打印为“HelloWo... 查看详情

我啥时候应该创建一个新的 DbContext()

】我啥时候应该创建一个新的DbContext()【英文标题】:WhenshouldIcreateanewDbContext()我什么时候应该创建一个新的DbContext()【发布时间】:2012-11-1302:50:18【问题描述】:我目前正在使用类似于此的DbContext:namespaceModelspublicclassContextDB:DbC... 查看详情

我应该如何编写转换数据的实体框架迁移(最好使用 DbContext)?

】我应该如何编写转换数据的实体框架迁移(最好使用DbContext)?【英文标题】:HowshouldIwriteanEntityFrameworkmigrationthattransformsdata(preferablyusingtheDbContext)?【发布时间】:2012-09-1714:18:48【问题描述】:假设我的对象有一个Name字段,我... 查看详情

在 Azure OIDC 注销后,应该将啥内容安全策略标头值重定向回应用程序

】在AzureOIDC注销后,应该将啥内容安全策略标头值重定向回应用程序【英文标题】:Whatshouldcontentsecuritypolicyheadervaluetoredirectbacktoapplcation,afterAzureOIDClogout在AzureOIDC注销后,应该将什么内容安全策略标头值重定向回应用程序【发布... 查看详情

我应该在另一个命名空间中使用实体框架 DBContext 的部分类吗

】我应该在另一个命名空间中使用实体框架DBContext的部分类吗【英文标题】:ShouldIuseapartialclassforEntityFrameworkDBContextinanothernamespace【发布时间】:2013-06-2508:56:22【问题描述】:我的解决方案中有两个项目:项目1:主Web项目(命名... 查看详情

实体框架 DbContext 和线程安全

】实体框架DbContext和线程安全【英文标题】:EntityFrameworkDbContextandthreadsafety【发布时间】:2015-09-0508:43:46【问题描述】:我需要在一个事务中更新我的数据库中的几个表,我读到使用DbContext.SaveChanges应该是这样做的方法。但是我... 查看详情

您会将啥放入存储库类(数据访问层)的单元测试中?

...访问层编写一个单元测试,以确保一切正常。问题是,我应该在测试中加入什么样的东西?DAL是一个静态的Repositor 查看详情

与实体相比,另一层中的 DbContext

】与实体相比,另一层中的DbContext【英文标题】:DbContextinanotherlayercomparedtotheEntities【发布时间】:2021-09-1904:46:02【问题描述】:目前正在学习如何在.NETcoreMVC中实现DDD项目,我在尝试使用efcore创建Db表时遇到了问题。基本上我所... 查看详情

检查将啥输出写入标准输出

】检查将啥输出写入标准输出【英文标题】:Checkwhatoutputiswrittentostandardoutput检查将什么输出写入标准输出【发布时间】:2015-08-1817:44:45【问题描述】:我想在程序的某个部分检查输出是否写入标准输出(通过cout)。我发现了一... 查看详情