Есть ли способ создать наборы баз данных в Linqpad?

#c# #linq #linqpad

#c# #linq #linqpad

Вопрос:

Я тестирую некоторые запросы в программе, использующей Linqpad6. Это запрос, который я пытаюсь протестировать.

 var context = this;
var parameters = new UserQueryParameters();

var query = context.Set<UserEntity>()
            .AsNoTracking()
            .Filter(new UserQueryFilter(), parameters)
            .GroupBy(x => x.Name, x => x)
            .Select(x => x.Key ?? string.Empty)
            .OrderBy(x => x)
            .Paginate(parameters)
            .ConfigureAwait(false);
  

Когда я пытаюсь запустить это, я получаю сообщение об ошибке

Не удается создать набор баз данных для ‘UserEntity’, потому что этот тип не включен в модель для контекста.

Затем я пытаюсь

 var context = this;
var parameters = new UserQueryParameters();
var query = context.Users
            .AsNoTracking()
            .Filter(new UserQueryFilter(), parameters)
            .GroupBy(x => x.Name, x => x)
            .Select(x => x.Key ?? string.Empty)
            .OrderBy(x => x)
            .Paginate(parameters)
            .ConfigureAwait(false);
  

Но это приводит к ошибке:

Аргументы типа для метода ‘QueryExtensions.Filter<T, TParams>(IQueryable, IQueryFilter<T, TParams>, TParams?)’ не может быть выведен из использования. Попробуйте явно указать аргументы типа.`

Это контекст, который я использую:

         protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            base.OnConfiguring(optionsBuilder);
        }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            builder.ApplyConfiguration(new UserEntityTypeConfiguration());
        }
  

Как правильно отформатировать мой запрос?

Комментарии:

1. Возможно ли для вас поделиться своим контекстом?

2. Я добавил контекст базы данных в свой пост. Я использую конфигурации для создания таблиц в базе данных.

Ответ №1:

Да, вы можете добавить Connection (вверху слева) из linqpad и подключиться к своему dll .

Вот документ, показывающий, как это сделать.

Когда вы используете Linqpad, вы фактически находитесь внутри объекта Context. Просто введите:

 this.
  

и вы можете получить доступ к свойствам вашего ObejctContext.

(также: убедитесь, что вы используете «C # Statement»)

Комментарии:

1. Извините! Я забыл добавить две строки в верхней части моего запроса. Я уже ввел var context = this, и у меня все еще возникают проблемы. Я также использую инструкции C #.

2. в чем проблема