【问题标题】:SQL Query on Parent Include Child on EF父项上的 SQL 查询包括 EF 上的子项
【发布时间】:2012-05-29 08:53:15
【问题描述】:

我正在使用 RIA Services - MVVM pattern 使用 C# 开发 Silverlight。当我尝试从 OrdersOrdersDetails 获取记录时,出现以下错误:

'Notes'不是
的成员 'Transient.collection[XXX.SilverLight.Web.Models.OrderDetails(Nullable=True,DefaultValue=)]'。
到 提取集合元素的属性,使用子查询进行迭代 在收藏。靠近简单标识符,第 6 行,第 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')  )";

那么,效果很好。

【问题讨论】:

    标签: c# linq mvvm silverlight-4.0 ria


    【解决方案1】:

    您正在尝试将it.OrderDetails 用作一个集合,它可能没有考虑到它具有复数名称。我将推断您的数据模型是每个Order 都有一个或多个OrderDetail 记录。 OrderDetail 对象的列表 没有Notes 属性。个人OrderDetail 可以。我不确定 RIA 语法,但应该是这样的:

    condition = "( (it.CustomerName like 'test')  )  and  ( 
          (it.OrderDetails.Notes.Any(n => n.Contains('testnote') 
    )";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多