有没有办法在Linqpad中创建DbSet?

问题描述

我正在使用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”创建DbSet,因为此类型不是 包含在上下文模型中。

然后我尝试

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

但这会产生错误

方法'QueryExtensions.Filter (IQueryable,IQueryFilter ,TParams?)'不能为 从用法推断。尝试指定类型参数

这是我正在使用的上下文:

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

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

            builder.ApplyConfiguration(new UserEntityTypeConfiguration());
        }

格式化查询的正确方法是什么?

解决方法

是的,您可以从linqpad添加一个Connection(左上角)并连接到您的dll

这里doc向您展示了操作方法。

使用Linqpad时,实际上是在Context Object中。只需输入:

this.

,您可以访问ObejctContext上的属性。

(也:确保您使用“ C#语句”)