我是WCF数据服务的新手。我有一个非常简单的数据模型。它的一些属性具有相同的类型,如下所示:
public IQueryable<IntegerSum> HouseholdGoodsSums
{
get
{
return GetData<IntegerSum>(DefaultProgramID, "rHouseholdGoodsPrice", IntegerSumConverter);
}
}
public IQueryable<IntegerSum> StructureSums
{
get
{
return GetData<IntegerSum>(DefaultProgramID, "rStructurePrice", IntegerSumConverter);
}
}
IntegerSum是一个非常简单的类:
[DataServiceKey("Amount")]
public class IntegerSum
{
public int Amount { get; set; }
}
当我在网络浏览器中导航到我的服务时,我看到以下错误消息:
服务器在处理请求时遇到错误。异常消息是'Property'HarilyGoodsSums'和'StructureSums'是IQueryable类型'IntegrationServices.PropertyIntegrationServices.IntegerSum'和'IntegrationServices.PropertyIntegrationServices.IntegerSum'并且类型'IntegrationServices.PropertyIntegrationServices.IntegerSum'是类型'IntegrationServices.PropertyIntegrationServices的祖先.IntegerSum”。请确保每个类型层次结构只有一个IQueryable属性。'。
当我摆脱这两个属性中的一个时,服务就开始工作了。
我在google中搜索了此错误消息,但尚未找到解决方案。 是否真的不允许在数据模型中具有两个具有相同类型的属性?如果是这样,为什么?
答案 0 :(得分:2)
同志
要首先解决错误,您将遇到Reflection提供程序中的限制。具体而言,Reflection提供程序不支持MEST。
也就是说,有更好的方法来实现您想要实现的目标。您可能不应该将IntegerSum设置为实体类型(实体类型是唯一可识别的实体,它不适合您的方案)。虽然您无法直接公开,但可以将其公开为service operation。这似乎更接近你想要实现的目标。
有两种方法可以区分某些事物是否应该是一个实体:
HTH, 标记