首页 > 解决方案 > 如何在两个应用程序之间共享实体框架?

问题描述

我在具有以下架构的同一解决方案中有四个 VS 项目:

AdminUser项目共享相同的层Service/Repository但每个层都有自己的服务器(user.domain.comadmin.domain.com),因此它们位于不同的 IIS 池中。

我单独发布它们,但是,当我在管理员中进行一些更改时,由于实体框架缓存,它不会对最终用户的应用程序产生任何影响。我的存储库使用静态上下文,我无法丢失实体更改,因此无法将其转换为本地上下文。

我在用户的应用程序中尝试了这个:

foreach (var entity in _context.ChangeTracker.Entries())
{
     entity.Reload();
}

工作,但应用程序变得太慢。

有没有一种好方法可以在两个不同的应用程序中使用相同的 EF 层来识别数据库更改?

或仅禁用User的应用缓存..

我正在使用 EF6 和 .NET 4.6.1

谢谢

标签: c#.netvisual-studioentity-framework

解决方案


我的存储库使用静态上下文

不要那样做。上下文应该是瞬态的,或者限定在 HTTP 请求的范围内。


推荐阅读