Wcf 如何在一个服务或DAL中使用多个数据库(MSSQL)?
我一直在浏览互联网上的一些不同的线程,要么我看不出提议的解决方案对我有效,要么他们的具体情况与我所处的不同 目前,我们拥有大约8个不同的自包含数据库,每个数据库都位于另一个自包含网站(asp.net webforms)的后面。所有的数据库都非常小,并且服务于一个非常特殊的目的。也就是说,没有一种模式和设计能够以合理的方式真正匹配。有各种标识用户的guid,这些guid最终都将映射到该用户的单个guid,但是它们之间的映射是不同的,有时您必须在两个数据库之间切换,才能从第三个数据库获取所需的内容。只是有点乱 我想完全重构,将它们放在一个数据库中,以减少混乱和重复数据,但由于推回,解决方案将不得不使用我们现有的 我想做的是创建一个层,在这个层中,所有这些数据库都可以在一个应用程序中访问(可能启动一个新站点并将其放在那里)。关于这一点,有几个问题:Wcf 如何在一个服务或DAL中使用多个数据库(MSSQL)?,wcf,sql-server-2008,entity-framework,architecture,Wcf,Sql Server 2008,Entity Framework,Architecture,我一直在浏览互联网上的一些不同的线程,要么我看不出提议的解决方案对我有效,要么他们的具体情况与我所处的不同 目前,我们拥有大约8个不同的自包含数据库,每个数据库都位于另一个自包含网站(asp.net webforms)的后面。所有的数据库都非常小,并且服务于一个非常特殊的目的。也就是说,没有一种模式和设计能够以合理的方式真正匹配。有各种标识用户的guid,这些guid最终都将映射到该用户的单个guid,但是它们之间的映射是不同的,有时您必须在两个数据库之间切换,才能从第三个数据库获取所需的内容。
实体框架中的每个DBContext都使用一个数据库,所以这里的解决方案必须为每个数据库使用一个数据库。我通常做的是围绕实现CRUD操作的
DBContext
创建一个IContext
,然后构建一个Repository
,执行“业务逻辑”(如RegisterUser
)来操作多个上下文。IContext应该表示一组相关的“数据库对象”(例如产品数据库的IPProductContext)。现在,每个数据库可能只有一个上下文。随着数据库的整合,只需将受影响上下文的连接字符串更改为新数据库,就可以在不进行太多(如果有)代码更改的情况下恢复并运行
这是一个很好的介绍,我在这里找到了我所说的内容,尽管我认为这将我的“上下文”称为“存储库”,而我的“存储库”称为“工作单元”。
也就是说,你可以编写一个WCF服务来抽象出多个EF DBContext,然后你可以在后端更改内容,同时继续使用同一个Web服务。应该可以做到这一点。我最近对这个模式进行了一些研究,所以我认为通过一些调整,我应该能够让它正常工作。