Неожиданное поведение в запросе linq с ленивой загрузкой на ravendb
У меня была проблема со следующим кодом. Когда я не вызываю ToList() на начальном вызове RavenSession.Query<Item>(), свойство PhotoPath является нулевым в объекте ItemSummaryModel. Это проблема с ленивой загрузкой или что-то еще, что вызывает это?
Свойство PhotoPath было null при первоначальном сохранении этого документа. Затем я обновил его в последующем редактировании.
Когда я запрашиваю полный элемент вместо выбора нового объекта, он работает как ожидалось, заполняя все свойства.
Почему я должен был заставить выполнение запроса с ToList() для нового ItemSummaryModel, который будет заполнен, как ожидалось?
var fullItems = RavenSession.Query<Item>().ToList();
var items = (from i in fullItems
where i.DateAdded >= DateTime.Now.Subtract(new TimeSpan(10,0,0,0))
orderby i.DateAdded
select new ItemSummaryModel()
{
Id = i.Id,
PhotoPath = i.ListingPhotoPath,
MarketingInfo = i.MarketingInfoShort,
Name = i.Name,
Summary = i.Summary,
PriceTypeCode = i.ClearancePrice > 0 ? PriceType.Clearance : (i.SalePrice > 0 ? PriceType.Sale : PriceType.List),
ListSaleOrClearancePrice = i.ClearancePrice > 0 ? i.ClearancePrice : (i.SalePrice > 0 ? i.SalePrice : i.Price)
}).Take(nbrOfItems);
return items;
1 ответ:
Поставщик linq RavenDB довольно прост, он не может в настоящее время обрабатывать переназначение полей. Другими словами, он не может справиться с тем, что вы сделали это:
PhotoPath = i.ListingPhotoPath,Если вы изменили его на
ListingPhotoPath = i.ListingPhotoPath,Это сработает. Это проблема, которую планируется исправить