RIA EF4复杂多对多滤波器

时间:2011-07-25 22:29:06

标签: silverlight-4.0 entity-framework-4 ria

首先抱歉我的英语不好。

我的数据库结构类似于:

enter image description here

在EF4.1中使用RIA服务,选择仅具有某些特征的汽车的最佳方法是什么?

在客户端上,用户可以选择多个“特征”并通知值。 然后,我需要显示具有该特定值的所有汽车(“值”保存在CarCharacteristic表中) (像所有“汽车”(汽车)的东西都有“2”( CarCharacteristic )“门”(特征))

我想在客户端上这样做,但似乎不可能:(

为了能够在服务器上对此进行过滤,我需要至少发送所选特征的所有CharacteristicsId和用户通知的值。

问题是,如果我使用任何复杂(例如MyClass [])参数创建查询,我会收到错误:

域操作条目'GetCarsByCharacteristic'的参数'x'必须是预定义的可序列化类型之一

我认为我遗漏了一些明显的东西,因为它不会那么难......

如何做出这种事情的正确方法?

1 个答案:

答案 0 :(得分:0)

首先,由于您要将数组作为查询的参数发送,因此您需要使用HasSideEffects=true属性标记查询,如下所示:

    [Query(HasSideEffects=true)]

现在你可以发送你自己的类作为参数(我不确定,我还没有检查过),但你绝对可以使用Dictionary<Guid, int>类型的参数,我假设{{ 1}}是您用于Guid的类型,而Ids是值。

现在您可以根据需要过滤ID和设置值。

编辑: 另外,你没有提到使用int,所以我猜你正在使用DomainDataSource对象。在这种情况下,您可以添加过滤客户端,如下所示:

DomainContext