目前我们正在使用Breeze.js和Angular来开发我们的应用程序。由于一些持久的遗留问题,我们有两个数据库('肯尼亚'卢旺达')目前无法合并,但具有相同的架构和元数据。大多数情况下,客户端知道要命中哪个数据库,并通过.withParameters()函数或.saveOptions()函数传递请求。有时我们想要从两个数据库请求相同的查询(例如,如果我们请求所有可用国家/地区的列表),并且我们在客户端上使用EntityManager包装器来管理它并从每个数据库请求相同的查询。这是通过自定义EFContextProvider实现的,它使用返回的数据来确定适当的数据库,并在CreateContext()中创建适当的上下文。
为了进一步复杂化,在某些情况下,一个或另一个数据库不存在(这些是通过过滤复制创建的本地部署),但客户端不知道这一点。因此,在查询所有国家/地区的列表时,它会发出两个请求,一个会导致失败,因为上下文无法正确实例化。
这很容易在服务器上检测到。我想要做的是检测所请求的上下文是否可用,如果没有,则返回200响应和空集。
我可以在Breeze DBContextProvider CreateContext()方法中检测到这一点,但无法弄清楚如何使请求优雅地回退到空集响应。
由于
答案 0 :(得分:0)
不完全是我想要的,但它可能更有意义,因为大多数工作都是在客户端完成的:
我没有尝试更改控制器,而是将一个getAvailableDatabases添加到C#控制器操作中,并使用它来确定我将从客户端查询哪些数据库。