我正在將實體對象轉換爲我自己的模型(CustomerModel和OrderModel)。如何使用LINQ to Entities(使用變換)返回嵌套數據集?
我現在有一個返回我的客戶一個IQueryable方法:
IQueryable<CustomerModel> GetCustomers()
{
return from c in entities.Customers
select new CustomerModel {
CustomerId = c.CustomerId,
CustomerName = c.CustomerName
// Orders = ??
};
}
在我CustomerModel,你可以看到我有訂單的數組。
class CustomerModel {
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public OrderModel[] Orders { get; set; }
}
class OrderModel {
public int OrderId { get; set; }
public int CustomerId { get; set; }
public string OrderDetails { get; set; }
}
我似乎無法弄清楚訂單類型爲Array時,如何設置Customer對象內部的Orders。
當我將CustomerModel的訂單更改爲IEnumerable而不是數組,並且不能將.ToArray()與LINQ to Entities一起使用時,我能夠做到這一點,所以我被卡住了。
所以我的問題是:這是可能做的使用陣列的訂單?
問題的答案:
- 爲什麼一個數組?我在其他地方返回一個數組(供其他項目使用),並且訂單也是一個數組也是有意義的。
此外,您不能對訂單使用ToArray的(),將引發此錯誤:
System.NotSupportedException: LINQ to Entities does not recognize the method 'Proj.Models.Orders[] ToArray[Orders](System.Collections.Generic.IEnumerable`1[Proj.Models.Orders])' method, and this method cannot be translated into a store expression.
爲什麼你想要一個數組?首先,您可以使用Enumerable或Queryable中的.ToArray(),但數組意味着L2E難以跟蹤的事情(如排序和可變性)。 – 2012-01-12 00:37:35