如何在 WPF 应用程序中同时支持本地数据库和远程数据库
本文关键字:数据库 支持 WPF 应用程序 | 更新日期: 2023-09-27 18:36:01
我想构建一个可以支持多个数据源(本地和远程)的 WPF 应用程序。有一种配置可以在 2 种模式之间切换。我的计划是:
- 客户端:带有 MVVM 框架的 WPF 应用程序。
- 本地数据源:SQL Server 2012 和实体框架 6。
- 远程数据源:WCF 数据服务。
本地数据源和远程数据源共享相同的数据模型。我面临的问题是从本地和远程数据源返回的对象不同。例如:
- 本地:项目.模型.员工
- 远程:项目.WCFDataService.ServiceReference.Employee
因此,我无法将对象绑定到 WPF 视图。有没有简单/安全的方法来转换这些对象?还有其他建议吗?
您需要做的第一件事是将 EF 对象映射(转换)为在整个应用程序中使用的标准化数据实体(以及从 WCF 服务返回的数据实体)。可能有一百万个示例说明如何使用反射以通用方式执行此操作(这里有一个),但使用代码的直接映射(投影)也是一种选择,并且比反射更快。ORM是一种选择,但请注意不要通过引入您并不真正需要的组件来使事情过于复杂。
在 WCF 和任何类型的客户端应用程序之间共享数据实体都有很好的文档记录(快速和脏搜索:1、2、3、4)。
至于查询这两个数据源,请使用 SOA 方法。视图模型调用"服务"方法来获取其数据,服务负责调用本地数据存储库和远程 WCF 服务,然后合并结果。