wcf - 如何在一项服务或 DAL 中使用多个数据库(MSSQL)?

标签 wcf sql-server-2008 entity-framework architecture

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

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

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

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

  1. 是否有一个简单的解决方案,我可以在每个数据库上利用 Entity Framework 并让它们都位于同一个应用程序中?

  2. 我映射需要为每个数据库完成的每个 CRUD 操作的 WCF 服务是否是一个有效的解决方案?

最佳答案

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

这是我在谈论的内容中找到的一个很好的介绍,尽管我认为这将我的“上下文”称为“存储库”,将我的“存储库”称为“工作单元”。 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

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

关于wcf - 如何在一项服务或 DAL 中使用多个数据库(MSSQL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501871/

相关文章:

c# - ExtensionDataObject 未标记为可序列化

sql-server - 如何在 SSMS 2008 中更改 "Edit Top 200 Rows"中的 SQL

asp.net-mvc-3 - MVC3值不能为null。参数名称:值

c# - 如何将 Entity Framework ICollection 更改为 ObservableCollection?

c# - Entity Framework 4 中的显式多对多连接表

c# - 运行 ServiceHost 时无法同时支持 http 和 https url

c# - XML 反序列化忽略不按字母顺序排列的属性

wcf - OperationContext.Current 为 null,所有其他上下文也是如此

sql - 生成 3 到 6 之间的随机 int 值

php - 使用 sqlsrv 切换数据库的正确方法是什么?