小编mix*_*tch的帖子

构建参数化的EntityFramework核心表达式

嗨,我正在尝试构建一个表达式,以通过其主键获取通用实体,并获取参数化的sql查询。

当前,我可以获取正确的WHERE查询,但未对其进行参数化。

public async Task<TDbo> Get(TKey key, Expression<Func<TEntity, TKey>> keySelector)
{
    var propertyRef = keySelector.Body;
    var parameter = keySelector.Parameters[0];
    var constantRef = Expression.Constant(key);
    var equals = Expression.Equal(propertyRef, constantRef);
    var comparer = Expression.Lambda<Func<TEntity, bool>>(equals, parameter);

    return await _context.Set<TDbo>().SingleOrDefaultAsync(comparer);
}
Run Code Online (Sandbox Code Playgroud)

这将导致以下查询: SELECT e.\"Id\", e.\"Name\" \r\n FROM \"People\" AS e\r\nWHERE e.\"Id\" = 1\r\nLIMIT 2,而不是通缉: SELECT e.\"Id\", e.\"Name\" \r\n FROM \"People\" AS e\r\nWHERE e.\"Id\" = @__s_0\r\nLIMIT 2

c# asp.net entity-framework-core

4
推荐指数
1
解决办法
145
查看次数

标签 统计

asp.net ×1

c# ×1

entity-framework-core ×1