BLToolkit: как получить набор результатов мастер-детали с помощью LINQ? - PullRequest
0 голосов
/ 02 февраля 2011

Вот пример использования списка связей, взятых из BLToolkit документации :

from p in db.Product
select new
{
  p.OrderDetails.Count,
  p.ProductName
};

, где

class Product
{
  [PrimaryKey, Identity]
  public int ProductID;

  public string ProductName;

  [Association(ThisKey="ProductID",  OtherKey="ProductID")]
  public List<OrderDetail> OrderDetails;
}

Можно ли получить список продуктов сдетали заказа для каждого продукта, например:

from p in db.Product
select new
{
  Details = p.OrderDetails,
  p.ProductName
};

Приведенный выше код выдает исключение LinqException со следующим сообщением:

Не удается найти конвертер для 'System.Collections.Generic.List`1 [[Тип OrderDetail, TestProject, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null]] '.

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Хотя я не использовал BLToolkit, вы можете попытаться использовать определенный вами класс, а не полагаться на анонимный тип.

То есть вы можете определить класс с именем MyOrder, который имеет свойства String ProductName и List<OrderDetail> OrderDetails, а затем изменить свой запрос linq на что-то вроде:

from p in db.Product
select new MyOrder
{
  OrderDetails = p.OrderDetails,
  ProductName = p.ProductName
};

Я не могу гарантировать, что это сработает, но, вероятно, стоит попробовать (если кто-то не публикует что-то более определенное).

0 голосов
/ 02 февраля 2011

При использовании обычного поставщика linq to sql это будет работать нормально.С провайдером BLToolkit Linq я не знаю.

...