我正在使用RIA Services - MVVM pattern在C#上使用Silverlight。当我尝试从Orders
和OrdersDetails
获取记录时,出现以下错误:
'Notes' is not a member of
'Transient.collection[XXX.SilverLight.Web.Models.OrderDetails(Nullable=True,DefaultValue=)]'.
To extract a property of a collection element, use a subquery to iterate over the collection. Near simple identifier, line 6, column 58.
这是我的查询:
public IQueryable<Order> AdvancedSearchOrder(string condition)
{
ObjectQuery<Order> myQuery = new ObjectQuery<Order>("Orders", DbContext.ObjectContext()).Include("OrderDetails");
if (condition != "")
{
myQuery = myQuery.Where(condition);
}
return myQuery;
}
在这种情况下,我有
condition = "( (it.CustomerName like 'test') ) and ( (it.OrderDetails.Notes like 'testnote') )";
当我设置为
condition = "( (it.CustomerName like 'test') )";
然后,它很棒。
最佳答案
您正在尝试将it.OrderDetails
用作集合,这可能不是因为它具有复数名称。我将推断您的数据模型是每个Order
都有一个或多个OrderDetail
记录。 OrderDetail
对象列表没有Notes
属性。单个OrderDetail
可以。我不确定RIA语法,但是应该是这样的:
condition = "( (it.CustomerName like 'test') ) and (
(it.OrderDetails.Notes.Any(n => n.Contains('testnote')
)";
关于c# - EF上父包含子的SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10795926/