【发布时间】:2012-01-19 20:51:35
【问题描述】:
我正在处理一个项目,该项目有一个 Order 实体,该实体具有 OrderITems 的导航属性:
public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
public virtual ICollection<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public int OrderId { get; set; }
public int ProductId { get; set; }
public int Quantity { get; set; }
public virtual Order Order { get; set; }
}
我希望能够使用针对 OrderItems 集合的过滤器来查询订单
例如: http:\mysvc.com\mysvc\Orders?$filter=OrderItems\ProductId eq 1234
但是,我似乎无法让它发挥作用。有任何想法吗?我很乐意提供更多详细信息。
项目首先使用 EntityFramework 代码 4.1 数据提供者。
更新了异常和调用堆栈:
未实现 无法创建类型为“System.Data.Services.Internal.ProjectedWrapper1”的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。 System.Data.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq) 处的 System.NotSupportedException
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter 父级,表达式 linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(表达式 linq)
在 System.Data.Objects.ELinq.ExpressionConverter.ConditionalTranslator.TypedTranslate(ExpressionConverter 父级,ConditionalExpression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter 父级,表达式 linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(表达式 linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda,DbExpression 输入)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda,DbExpression 输入,DbExpressionBinding& 绑定)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter 父级,MethodCallExpression 调用,DbExpression& 源,DbExpressionBinding& sourceBinding,DbExpression& lambda)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectTranslator.Translate(ExpressionConverter 父,MethodCallExpression 调用)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter 父,MethodCallExpression 调用,SequenceMethod 序列方法)
在 System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter 父,MethodCallExpression linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter 父级,表达式 linq)
在 System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(表达式 linq)
在 System.Data.Objects.ELinq.ExpressionConverter.Convert()
在 System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan (Nullable`1 forMergeOption)
在 System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
在 System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
在 System.Data.Entity.Internal.Linq.InternalQuery`1.GetEnumerator()
在 System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.IEnumerable.GetEnumerator()
在 System.Data.Services.Internal.ProjectedWrapper.EnumerableWrapper.System.Collections.IEnumerable.GetEnumerator()
在 System.Data.Services.WebUtil.GetRequestEnumerator(IEnumerable 可枚举)
【问题讨论】:
标签: wcf c#-4.0 entity-framework-4.1 wcf-data-services