c# - 如何在两个应用程序之间共享实体框架?
问题描述
我在具有以下架构的同一解决方案中有四个 VS 项目:
- 管理应用程序 -> 服务 -> 存储库
- 最终用户应用程序 -> 服务 - 存储库
Admin
和User
项目共享相同的层Service
/Repository
但每个层都有自己的服务器(user.domain.com
和admin.domain.com
),因此它们位于不同的 IIS 池中。
我单独发布它们,但是,当我在管理员中进行一些更改时,由于实体框架缓存,它不会对最终用户的应用程序产生任何影响。我的存储库使用静态上下文,我无法丢失实体更改,因此无法将其转换为本地上下文。
我在用户的应用程序中尝试了这个:
foreach (var entity in _context.ChangeTracker.Entries())
{
entity.Reload();
}
工作,但应用程序变得太慢。
有没有一种好方法可以在两个不同的应用程序中使用相同的 EF 层来识别数据库更改?
或仅禁用User
的应用缓存..
我正在使用 EF6 和 .NET 4.6.1
谢谢
解决方案
我的存储库使用静态上下文
不要那样做。上下文应该是瞬态的,或者限定在 HTTP 请求的范围内。
推荐阅读
- python - 从邮政编码或城镇名称查找农贸市场
- php - 通过 PHP 和 MySql 进行数据替换触发
- powerbi - DAX 子查询度量?
- eclipse - Eclipse 2019-03 在 macOS Catalina 上设置 C/C++ lldb 调试器
- c# - 如何使用 linq 将平面列表转换为多级查找?
- angular - 使用 $localize 时如何指定自定义翻译 ID
- c# - Visual Studio 中的错误 CS0311 通用错误
- mongodb - MongoDB 根据其他集合中的现有引用查找文档
- r - 如何根据列中的变量转换 R 中的列/行
- database - 如何将受 Gmail 信任的 CA 证书包含到 Oracle 钱包中?