3

我一直在浏览整个互联网上的几个不同的线程,要么我看不出所提出的解决方案对我有用,要么他们的特殊情况与我所处的情况不同。

目前有大约 8 个不同的自包含数据库,每个数据库都位于另一个自包含网站 (asp.net webforms) 后面。所有的数据库都非常小,并且服务于一个非常特殊的目的。也就是说,没有一个模式和设计以合理的方式真正匹配。有各种 GUID 标识了一个用户,这些用户最终都将映射到该用户的单个 guid,但它们之间的映射是不同的,有时您必须在几个数据库之间跳转才能从第三个数据库中获取您需要的内容。只是有点乱。

我想完全重构以将它们全部放在一个数据库中,以减少混淆和重复数据,但由于推回,解决方案必须使用我们现有的。

我想做的是创建一个层,所有这些数据库都可以在一个应用程序中访问(也许启动一个新站点并将其放在那里)。关于这个的几个问题:

  1. 是否有一个简单的解决方案,我可以在每个数据库上利用实体框架并将它们都放在同一个应用程序中?

  2. 像 WCF 服务这样我映射每个数据库需要完成的每个 CRUD 操作的东西会是一个有效的解决方案吗?

4

1 回答 1

2

Entity Framework 中的每个 DBContext 都使用一个数据库,因此您的解决方案必须为每个数据库使用一个。我通常做的是IContext围绕DBContext实现 CRUD 操作创建一个,然后构建一个Repository执行“业务逻辑”(如RegisterUser)我操纵多个上下文的。IContext 应该表示一组相关的“数据库对象”(例如产品数据库的 IProductContext)。目前,每个数据库可能只有一个上下文。随着数据库的整合,只需将受影响上下文的连接字符串更改为新数据库,您就可以恢复并运行而无需太多(如果有的话)代码更改。

这是我在谈论的内容中找到的一个很好的介绍,尽管我认为这称为我的“上下文”存储库”和我的“存储库”“工作单元” 。http://www.asp.net/mvc/tutorials/开始使用 ef 使用 mvc/实现存储库和工作模式单元在一个 asp-net-mvc 应用程序中

也就是说,您可以编写一个抽象出多个 EF DBContext 的 WCF 服务,然后您可以在后端更改内容,同时继续使用相同的 Web 服务。

于 2013-03-19T15:11:52.577 回答