使用我们以前的ORM,OpenAccess
,我们能够在查询的select语句中包含帮助器方法。例如,将SQL数据与高速缓存的应用程序数据组合在一起。在实体框架查询中使用帮助器方法
切换到实体框架6.x中后我们得到象这样的错误:
LINQ到实体无法识别方法“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查询拆分出来那会返回产品的神经数据和另一种方法来检索你从缓存中获取的内容? –