我需要代码相关的帮助。目前我正在使用 bool 变量打开 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();
}
}
最佳答案
我看不出你的例子有什么问题(除了 else 不是 super 有用),但为了可重用性,你可以使用扩展方法。
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();
}
}
关于c# - 如何使用 bool 变量切换 EntityFramework Tracker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51044575/