0

我正在构建一组组件,我们称它们为服务,它们使用实体框架来访问它们的数据。这些组件旨在用于同一解决方案中的多个项目。我们希望这些组件尽可能地“独立”,这意味着我们希望在一项服务中将 Entity Framework 从 5 升级到 6,而将 EF5 留在另一项服务中。我们的解决方案可能如下所示:

Solution
  +- Application1 (referencing ServiceA and ServiceB)
  +- Application2 (referencing ServiceA and ServiceC)
  +- ...
  +- ServiceA - Dll Using Entity Framework 5
  +- ServiceB - Dll Using Entity Framework 5
  +- ServiceC - Dll Using Entity Framework 6

对于 Application1,我们没有问题,因为我们可以将 EF5 作为 nuget 包安装在其中,并让 ServiceA 和 ServiceB 都使用它,但是 Application2 呢?我无法想出在一个项目中同时拥有 EF5 和 EF6 的方法......那么配置呢?有没有办法只为 ServiceA 和 ServiceB 编写一次配置,而不必为使用它们的每个应用程序重复它?我宁愿避免制作 ServiceA 和 ServiceB 网络服务并保持模块之间的所有交互“进行中”。

先感谢您!

4

1 回答 1

0

进一步的研究使我确信,在同一个项目中拥有两个版本的 EF 根本是不可能的。在同一个解决方案中拥有多个版本的 EF 甚至是不可取的!我的目标是让“独立”服务(类似于 DDD 的有界上下文)在“进程中”彼此交互并与应用程序交互,但这是不可行的。

为了缓解配置问题,我想我应该依靠“配置服务”或至少通过基于代码的配置(https://msdn.microsoft.com/en-us/data/jj680699.aspx)进行大部分配置并尽可能将其与应用程序屏蔽。

于 2016-02-29T21:51:23.217 回答