抱歉,如果有太多/不够详细或其中一些无关紧要,这是我在此板上的第一篇文章:
背景
我目前正在使用 VS2010 在 C# 中开发基于 Silverlight 4 和 WCF RIA (SP1) 的应用程序。堆栈是:SQL Server -> nHibernate -> 域服务 -> 服务代理 -> Silverlight 4 Client (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 Entity 类。任何想法表示赞赏。