Используя наш предыдущий ORM, OpenAccess
, мы могли включать вспомогательные методы в операторы выбора наших запросов. Например, чтобы объединить данные SQL с данными кэшированных приложений.Использование вспомогательных методов в запросе Entity Framework
После перехода на Entity Framework 6.x мы получаем ошибки, как это:
LINQ к Entities не распознает метод 'System.String GetProductTranslation'
Линг запрос выглядит следующим образом:
var products = (from p in db.Products
join cp in db.CustomerPrices on p.ProductId equals cp.ProductId
where p.LockedSince.Equals(null)
&& ... etc etc etc
select new
{
ProductId = p.ProductId,
Name = TranslationHelper.GetProductTranslation(p.ProductId, ProductTranslationField.Name, p.Name),
Description2 = TranslationHelper.GetProductTranslation(p.ProductId, ProductTranslationField.Description2, p.Description2),
Description3 = TranslationHelper.GetProductTranslation(p.ProductId, ProductTranslationField.Description3, p.Description3),
Description4 = TranslationHelper.GetProductTranslation(p.ProductId, ProductTranslationField.Description4, p.Description4),
... etc etc etc
});
в этом случае метод GetProductTranslation
захватывает данные трансляции из кэша приложений для предотвратить использование бесконечных количеств объединений и подчеркнуть базу данных.
Каким будет лучший способ реплицировать это с помощью Entity Framework 6.x?
Почему просто не расколоть путем SQL запроса, который будет возвращать ненужные данные продукта и другие методы для извлечения того, что вы хотите от кеша? –