Как просмотреть SQL, сгенерированный Entity Framework 6, ВКЛЮЧАЯ ДИНАМИЧЕСКИЕ C ПАРАМЕТРЫ ФИЛЬТРА - PullRequest
0 голосов
/ 21 июня 2020

Существует множество статей, в которых показано, как получить SQL, сгенерированный EF, включая значения параметров в выражении LINQ. Например, вот один: https://www.stevefenton.co.uk/2015/07/getting-the-sql-query-from-an-entity-framework-iqueryable/. Проблема в том, что ни один из них не возвращает значения параметров, которые будут добавлены в запрос фильтрами Dynamin (https://entityframework-dynamicfilters.net/). Давайте посмотрим на пример.

Мы определили класс контекста БД для доступа к базе данных и создали Dynami c Фильтр:

public class MyContext : DbContext
{
    public virtual DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Filter("ExcludeDeletedUsers", (User u) => u.IsDeleted, false);
    }

    ... the rest of the class ...
}

У нас есть функция, которая возвращает всех пользователей с a укажите имя:

public List<User> GetByFirstName(string firstName)
{
    return _myContext.Users.Where(u => u.FirstName == firstName).ToList();
}

На сервере MS SQL вышеуказанное приведет к запросу с двумя параметрами: @p__linq__0 и @DynamicFilterParam_000001. Первому будет присвоено значение firstName, а второму - 0. Как я могу получить значение @DynamicFilterParam_000001 при отладке в Visual Studio (не в журналах, не в SQL Profiler)?

...