c# - 如何使用 bool 变量切换 EntityFramework Tracker

标签 c# entity-framework linq

我需要代码相关的帮助。目前我正在使用 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/

相关文章:

java - 使用 Java 或 C# 读取数据表

c# - UserManager 不断抛出 System.ArgumentNullException

c# - 可以将任意长度的参数数组转换为嵌套循环吗?

javascript - 编译转换 : The type or namespace name could not be found when running TypeLite. tt

c# - 我在 Mysql 中遇到希伯来语问题。我与 Visualstudio10、连接器和 linq 一起使用。我能做些什么?

c# - 在 C# 中使用 TakeWhile 进行 Linq

c# - Entity Framework 中 Select 和 Where 之间的区别

sql - RIA 服务中的存储过程

c# - UserControl 并将来自此 UserControl 的 TextBox 事件作为主要事件调用

C# WinForms 等待表单继续