我一直在网上搜索一种方法来解决我的问题,我没有任何运气。我正在开发一个Silverlight商务类应用程序,并尝试使用RIA服务。我成功地加载和保存没有任何重大问题的实体,但是当我的应用程序第一次加载时,我需要加载我所谓的“值列表”。Silverlight/RIA服务/ EF - 自定义对象
我的值列表是独立的实体,大概5个左右,由Id(键)和Value组成,它们用于填充combobox和autocompletebox之类的东西。我可以单独查询每一个,但是我宁愿在一次查询中一次加载所有值列表,以加快速度,因为每条记录少于15条记录。我试图开发一个自定义类返回所有这些,它看起来像这样...
<DataContract(IsReference:=True)>
<KnownType(GetType(ValueList1Item))>
<KnownType(GetType(ValueList2Item))>
<KnownType(GetType(ValueList3Item))>
Partial Public Class ValueLists
<DataMember()>
Public Property ValueList1 AS List(Of ValueList1Item)
<DataMember()>
Public Property ValueList2 AS List(Of ValueList2Item)
<DataMember()>
Public Property ValueList3 AS List(Of ValueList3Item)
End Class
我已经试过许多方法来实现服务的方法,其中一个看起来是这样的...
Public Function GetValueLists() As ValueLists
Dim ret As ValueLists = New ValueLists
ret.ValueList1 = (From v1 In ObjectContext.ValueList1Items
Select v1).ToList
ret.ValueList2 = (From v2 In ObjectContext.ValueList1Items
Select v2).ToList
ret.ValueList3 = (From v3 In ObjectContext.ValueList3Items
Select v3).ToList
Return ret
End Function
我也试过返回一个IQueryable(ValueLists)。无论我尝试过什么,每当我尝试使用自定义类型时,都无法将该方法公开给客户端。 RIA Services甚至有可能做这样的事情还是尚未成熟?我知道我在过去用直WCF完成了这一点,但它显然有更多的工作。
由于提前, 凯西
谢谢你的回复狮子座。只要我有机会,我会尝试一下,看看它是否有效。如果我继续遇到像这样的问题,我可能会很快倾倒RIA服务,并直接进入常规的WCF实现。我知道WCF是更多的工作,但它肯定是更灵活,这是很好的。在这一点上,我认为RIA Services不是复杂程度相当高的应用程序的最佳解决方案,但也许我错了。 – Casey 2012-02-13 16:05:05
那么我对这个狮子座还没有任何运气。我真的不希望实体只能被读取,因为我将有一个“系统”页面,用户可以编辑这些值列表。 – Casey 2012-02-16 12:12:42