如何将多个WCF RIA实体类型转换为一个类型以在ViewModel中使用

本文关键字:类型 一个 ViewModel WCF RIA 类型转换 实体 | 更新日期: 2023-09-27 18:00:33

如果有太多/不够的细节或其中一些是无关的,请道歉,这是我在这个板上的第一篇文章:

背景

我目前正在使用VS2010在C#中开发一个基于Silverlight4和WCF RIA(SP1)的应用程序。堆栈为:SQL Server->nHibernate->域服务->服务代理->Silverlight 4客户端(MVVM)

我在数据库中有4个表,其中有相同的字段,每个表都持有相同数据的不同"类型"。

数据实际上应该在一个带有类型列的表中,但这是一个我无法更改的遗留数据库。

我为每个表创建了一个POCO和一个处理访问和更新四个不同实体集的单个域服务。这些类型被投影到Silverlight客户端,并且所有CRUD内容都按预期工作。

问题

我有一个视图模型,其中包含一个ObservableCollection,其中T是4种实体类型之一,但我不想使用4个集合来容纳不同的实体类型。UI将允许用户选择类型,我希望使用相同的集合和UI绑定来编辑该数据。

我试过

  • 正在创建通用域服务,但不支持它们。

  • 让服务器端实体类型从抽象类继承或实现接口,但域服务不投影抽象类或接口。

  • 为实现客户端接口的4个投影实体创建客户端分部类。但是,当我尝试将ObservableCollection<MyEntity>分配给ObservableCollection<MyEntityInterface>时,我会得到以下错误:

Cannot implicitly convert type 'System.Collections.ObjectModel.ObservableCollection<BusinessDomain.StandardInterestRate>' to 'System.Collections.ObjectModel.ObservableCollection<BusinessDomain.IInterestRate>'

我怀疑原因是StandardInterestRate继承自RIA实体类。任何想法都值得赞赏。

如何将多个WCF RIA实体类型转换为一个类型以在ViewModel中使用

尝试

ObservableCollection<MyEntity> entities = ...
ObservableCollection<MyEntityInterface> iEntities = new ObservableCollection(entities.Cast<MyEntityInterface>());
相关文章: