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

时间:2015-01-04 04:01:23

标签: c# wpf wcf

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

  • 客户端:使用MVVM Framework的WPF应用程序。
  • 本地数据源:SQL Server 2012和实体框架6.
  • 远程数据源:WCF数据服务。

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

  • Local:Project.Model.Employee
  • 远程:Project.WCFDataService.ServiceReference.Employee

因此,我无法将对象绑定到WPF视图。有没有简单/安全的方法来转换这些对象? 还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

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

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

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