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
C# 具有多个DBContext和数据库的WCF数据服务_C#_Wcf_Wcf Data Services_Dbcontext - Fatal编程技术网

C# 具有多个DBContext和数据库的WCF数据服务

C# 具有多个DBContext和数据库的WCF数据服务,c#,wcf,wcf-data-services,dbcontext,C#,Wcf,Wcf Data Services,Dbcontext,这是我第一次使用WCF DataServices,但在实现我的服务类时,我仅通过引用我的DBContext就能够启动并运行一个简单的实体备份服务,例如: public class MyDataService : DataService<MyDBContext> 公共类MyDataService:DataService 然后,我可以简单地选择我想要公开的实体,它可以正常工作,这很酷。但是事情从来不像开发人员那么简单,是吗?我的情况更复杂,所以我有两个问题: 在上面MyDBConte

这是我第一次使用WCF DataServices,但在实现我的服务类时,我仅通过引用我的DBContext就能够启动并运行一个简单的实体备份服务,例如:

public class MyDataService : DataService<MyDBContext>
公共类MyDataService:DataService 然后,我可以简单地选择我想要公开的实体,它可以正常工作,这很酷。但是事情从来不像开发人员那么简单,是吗?我的情况更复杂,所以我有两个问题:

  • 在上面MyDBContext的简单示例中,我不必担心连接字符串,因为该上下文反映了整个应用程序共享的单个数据库,因此连接字符串只存储在配置中,并使用默认构造函数实例化。但是,我还需要公开对第二个特定于部门的DBContext的访问(我们称之为DepartmentDBContext)。换句话说,根据发出请求的人,我需要将它们路由到它们的特定数据库(因此相同的上下文,但根据请求使用不同的连接字符串进行实例化)。如何最好地处理这一问题
  • 除了DepartmentDBContext之外,我的消费者或多或少都可以完全访问它,我还需要公开存在于不同dbs(以及不同DBContext)中的有限数据位和数据片段,因此我需要构建一种机制来做到这一点,而不必公开我的整个数据模型。实际上,我需要公开的只是一些id和Name属性(所以想象一下像DepartmentId、CustomerId、CustomerName、AccountID、AccountName等等)。我的想法是将这些属性打包成一个POCO,并将其公开给消费者,因为这是他们最终需要的所有内容,但我不确定应该如何通过WCF数据服务编写这些内容,因为它不会绑定到单个上下文

  • 提前感谢您提供的任何提示或建议

    1。有一种方法可以重载,比如InitialiseContext.2。您可以使用查询拦截器谢谢您的回复…好的,有一个CreateDataSource()方法可以重写,这就是您的意思吗?所以我基本上将我的类def更改为:public class MyDataService:DataService,然后重写该方法以返回适当初始化的上下文?是的。我以前从未做过这样的事。因此,考虑到我假设它们是不同的实体模型,这可能不起作用。此外,您可能还需要谷歌“dbcontext数据服务”。上一次我听说它们不直接兼容,需要一点小技巧才能获得ObjectContext。我的问题是你是如何托管你的服务的?您是否使用WCF/IIS托管它?如果是,只需实现IHttpHandler,并根据发出请求的人,初始化new DataService或new DataService,然后在DataService类上调用ProcessRequestFormMessage入口点。希望这有帮助。