У меня есть 2 таблицы Products и ProductDetails.Продукты содержат всю информацию о моих запасах, а ProductDetails используется, чтобы позволить изменениям цены продукта в системе заблаговременно до того, как они вступят в действие.
Я пытаюсь написать простой запрос, который возвращаетвсе продукты, а также обновляет Стоимость и цену продукта, если соответствующая строка найдена в ProductDetails, где CommenceDate меньше или равен текущей дате.Пока что у меня есть:
var products = from p in Products
from pd in ProductDetails
.Where(pd => pd.ProductID == p.ID && pd.CommenceDate <= DateTime.Now)
.DefaultIfEmpty()
where p.InUse == true
select p;
Сначала я подумал, что смогу достичь того, что хотел, объявив новый продукт в избранном, например:
var products = from p in Products
from pd in ProductDetails
.Where(pd => pd.ProductID == p.ID && pd.CommenceDate <= DateTime.Now)
.DefaultIfEmpty()
where p.InUse == true
select new Product {
ID = p.ID,
Description = p.Description,
....
Cost = pd.Cost.HasValue ? pd.Cost : p.Cost,
Price = pd.Price.HasValue ? pd.Price : p.Price,
...
};
.следующая ошибка:
Explicit construction of entity type 'LINQPad.User.Product' in query is not allowed
Есть ли простой способ сказать «вернуть товар и при необходимости заменить некоторые значения свойств»?