Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 如何在一个服务或DAL中使用多个数据库(MSSQL)?_Wcf_Sql Server 2008_Entity Framework_Architecture - Fatal编程技术网

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

Wcf 如何在一个服务或DAL中使用多个数据库(MSSQL)?,wcf,sql-server-2008,entity-framework,architecture,Wcf,Sql Server 2008,Entity Framework,Architecture,我一直在浏览互联网上的一些不同的线程,要么我看不出提议的解决方案对我有效,要么他们的具体情况与我所处的不同 目前,我们拥有大约8个不同的自包含数据库,每个数据库都位于另一个自包含网站(asp.net webforms)的后面。所有的数据库都非常小,并且服务于一个非常特殊的目的。也就是说,没有一种模式和设计能够以合理的方式真正匹配。有各种标识用户的guid,这些guid最终都将映射到该用户的单个guid,但是它们之间的映射是不同的,有时您必须在两个数据库之间切换,才能从第三个数据库获取所需的内容。

我一直在浏览互联网上的一些不同的线程,要么我看不出提议的解决方案对我有效,要么他们的具体情况与我所处的不同

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

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

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

  • 有没有一个简单的解决方案,我可以利用每个数据库上的实体框架,让它们都位于同一个应用程序中

  • 像WCF服务一样,映射每个数据库需要执行的每个CRUD操作是否是一个有效的解决方案


  • 实体框架中的每个DBContext都使用一个数据库,所以这里的解决方案必须为每个数据库使用一个数据库。我通常做的是围绕实现CRUD操作的
    DBContext
    创建一个
    IContext
    ,然后构建一个
    Repository
    ,执行“业务逻辑”(如
    RegisterUser
    )来操作多个上下文。IContext应该表示一组相关的“数据库对象”(例如产品数据库的IPProductContext)。现在,每个数据库可能只有一个上下文。随着数据库的整合,只需将受影响上下文的连接字符串更改为新数据库,就可以在不进行太多(如果有)代码更改的情况下恢复并运行

    这是一个很好的介绍,我在这里找到了我所说的内容,尽管我认为这将我的“上下文”称为“存储库”,而我的“存储库”称为“工作单元”。


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

    应该可以做到这一点。我最近对这个模式进行了一些研究,所以我认为通过一些调整,我应该能够让它正常工作。