gpt4 book ai didi

.net-5 - EF 5 中的 FromExpression 有什么用?

转载 作者:行者123 更新时间:2023-12-05 05:48:57 24 4
gpt4 key购买 nike

我试图了解 EF 5 中引入的新 FromExpression 扩展方法的用途是什么,因为已经有几种不同的方法可以查询实体

使用FromExpression:

var q = DBContext.Set<MyUser>()
.Include(x => x.UserRoles)
.ThenInclude(y => y.Role)
.Where(x => x.LoginName == loginName);

return await DBContext.FromExpression<MyUser>(() => q).SingleOrDefaultAsync();

不使用 FromExpression:

我使用单行的旧语法查询

var user = DBContext.Set<MyUser>()
.Include(x => x.UserRoles)
.ThenInclude(y => y.Role)
.Where(x => x.LoginName == loginName)
.SingleOrDefaultAsync();

或者我也可以使用扩展方法。

public static IQueryable<MyUser> FindUser(this IQueryable<MyUser> source, string loginName)
{
return source
.Include(x => x.UserRoles).ThenInclude(y => y.Role)
.Where(x => x.LoginName == loginName)
}

var user = DBContext.Set<MyUser>()
.FindUser(loginName)
.SingleOrDefaultAsync();

最佳答案

所有这些场景都不需要 FromExpression(尽管它在某种程度上适用于它们)。

该方法的主要(可能也是唯一)用途是用于 Mapping a queryable function to a table-valued function正如文档链接中所解释的那样,我不会复制/粘贴那里写的所有内容。该方法对于那种类型的映射是必不可少的,因为它不支持使用 HasTranslation 的标量函数映射。

不久,将“旧语法”用于常规 LINQ to entities 查询场景,FromExpression 仅用于公开 TVF 映射的可查询函数。

关于.net-5 - EF 5 中的 FromExpression 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70745191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com