Как включить EntityFramework Tracker с помощью логической переменной - PullRequest
0 голосов
/ 26 июня 2018

Мне нужна помощь, связанная с кодом. В настоящее время я включаю 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();
    }
}

1 Ответ

0 голосов
/ 26 июня 2018

Я не вижу много неправильных в вашем примере (за исключением случаев, когда они не очень полезны), но для повторного использования вы можете использовать метод расширения.

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...