c# - 如何使用两个 DbContext 将 IdentityUser 链接到 EF Core 中的实体
问题描述
我正在尝试链接IdentityUser
到 EF Core 中的实体,但问题是我使用的是复杂的架构(干净的架构或至少非常接近它),所以我有多个项目,其中两个有自己的DbContext
并正在尝试将我的用户链接到其保存的项目等变得很痛苦。
这是问题所在:
- 解决方案名称是
App
- 我在那里有几个项目:(参考 App.Domain)、
App.Domain
(参考 App.Application)、(参考 App.Application)和(参考 App.Application、App.Persistence 和 App.Identity)App.Application
App.Persistence
App.Identity
App.API
App.Persistence
有一个 DbContext ->ApplicationDbContext : DbContext
包含所有DbSets
与实体相关的App.Domain
App.Identity
也有一个 DbContext ->ApplicationIdentityDbContext : IdentityDbContext
它是空的,仅存在于Identity
相关表中- 我希望我
ApplicationUser : IdentityUser
能够在其模型中拥有与实体相关的属性,例如(命名空间 App.Identity.Models.ApplicationUser.cs)public List<Item> SavedItems
,反之,我希望能够在实体中拥有与用户,例如(命名空间 App.Domain.Entities.Item.cs)public List<ApplicationUser>SavedBy
我已经问过有人告诉我创建一个App.Persistence.ApplicationDbContext
继承自的抽象App.Identity.ApplicationIdentityDbContext
,我仍然会定义我的 DbSet,就好像它是实际的ApplicationDbContext : DbContext
但它确实是IApplicationDbContext : ApplicationIdentityDbContext
这样,这样我就只有一个 DbContext,这将解决问题。
我想这样做,但我无法解决两件事:
- 这是正确的方法吗?
- 怎么做?
我还读到,在一个大型项目中,最好保留多个 DbContext 以防止多线程错误和其他东西,所以我想知道我应该在这里做什么才能让它工作并可能保持拥有多个 DbContext 的好处。
如果您能给我详细解释您的解决方案,我将不胜感激,因为我很想知道您是如何解决这个我已经考虑了数周甚至数月的问题的。
似乎只有一个 DbContext 是解决方案,但是也App.Persistence
需要一个 DbContext 所以我不知道该怎么做。
您是否认为我应该让整个App.Identity
项目被项目吸收,App.Persistence
因为它们具有相同的项目引用并且只有一个 DbContext 继承IdentityDbContext
?
解决方案
推荐阅读
- node.js - 如何使用 CircleCI 进行语义发布在未发现任何更改时失败
- ruby - 厨师在执行资源中理解 only_if
- c++ - 二阶多项式计算器的输出不一致
- python - websocket._exceptions.WebSocketBadStatusException:握手状态 404 未找到
- sql - 如何删除 SQL Developer 列值中隐藏的双引号
- ksh - 为什么 IFS 会影响 subshell 变量?
- reactjs - 浏览器如何将 Reactstrap 组件解析为 html 标签?
- c# - 添加多个 css 类 @Html.LabelFor
- python-3.x - 一次过滤和添加新列时出现值错误
- arrays - 如何修复此代码,从服务中获取数据并使用 Reactive Form 将其发送到我的表单?