Sig*_*die 5 c# linq entity-framework
我需要代码相关的帮助。目前我正在使用布尔变量打开 Tracking 和 NoTracking。想检查是否有更好的方法来编写这段代码:
private Task<TEntity> GetWithOrWithoutTracking(Expression<Func<TEntity, bool>>
predicate, bool isTracked = false)
{
if (isTracked)
return _dbSet.Where(predicate).AsTracking()
.FirstOrDefaultAsync();
else
return _dbSet.Where(predicate).AsNoTracking()
.FirstOrDefaultAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
我在您的示例中没有看到太多错误(除了 else 不是超级有用),但为了可重用性,您可以使用扩展方法。
public static class QueryableExtensions
{
public static IQueryable<T> AsMaybeTracking<T>(this IQueryable<T> source, bool isTracked = false) where T : class
{
return isTracked ? source.AsTracking() : source.AsNoTracking();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
343 次 |
| 最近记录: |