如何在 WPF 应用程序中同时支持本地和远程数据库

How to support both local and remote database in a WPF application

我想构建一个可以支持本地和远程多个数据源的 WPF 应用程序。有一种配置可以在 2 种模式之间切换。我的计划是:

本地和远程数据源共享相同的数据模型。我面临的问题是从本地和远程数据源返回的对象不同。例如:

因此,我无法将对象绑定到 WPF 视图。有什么 easy/safe 方法可以转换这些对象吗? 还有其他建议吗?

您需要做的第一件事是将 EF 对象映射(翻译)为您在整个应用程序中使用的标准化数据实体(以及来自 WCF 服务的 return)。可能有上百万个示例说明如何使用反射 (here is one) 以通用方式执行此操作,但使用代码直接映射(投影)也是一种选择,并且比反射更快。 ORM 是一种选择,但请注意不要通过引入您并不真正需要的组件而使事情过于复杂。

在 WCF 和任何类型的客户端应用程序之间共享数据实体都有详细记录(快速搜索:1, 2, 3, 4)。

至于查询两个数据源,使用SOA approach。视图模型调用 "service" 方法来获取其数据,服务负责调用本地数据存储库和远程 WCF 服务,然后合并结果。