【问题标题】:LINQPad EF Core no database provider has been configured for this DbContextLINQPad EF Core 没有为此 DbContext 配置数据库提供程序
【发布时间】:2021-03-15 21:52:42
【问题描述】:

我正在使用 LINQPad 6(高级版)。

我已通过 Entity Framework Core (2.x, 3.x, 5.x) 驱动程序创建了与我的自定义程序集的连接。我选择通过接受字符串的构造函数来实例化 DbContext。

如果我使用“C# 表达式”从此连接创建一个新查询,它可以正常工作。

Stuff.Take(100)

但是如果我选择“C# Statement(s)”和下面的示例查询,我会收到一条错误消息 -

“没有为此 DbContext 配置数据库提供程序...”

var _context = new MyContext();

var dataModel = _context.Stuff.Include(r => r.ParentStuff).ThenInclude(c => c.ChildStuff).FirstOrDefault(x => x.StuffId == 1234);

dataModel.Dump();

此错误令人困惑,因为我在 LINQPad 中设置 EF Core 连接时设置了提供程序。如果未配置数据库提供程序,那么我认为它会为两个查询抛出此错误。

【问题讨论】:

  • 如果您在Connection 下拉列表中选择您的数据库连接,并在C# 语句中使用Stuff.Take(100) 会怎样?不知道为什么需要创建一个新的上下文。选择连接后,您应该能够使用UserQuery,并且应该从您的数据库上下文继承UserQuery 类型。

标签: c# entity-framework-core linqpad


【解决方案1】:

如果你想用new创建一个新的DbContext,你应该set your DbContext class up for the scenario

在 LinqPad 中使用 EF Core 驱动程序创建连接不会自动将连接字符串发送到由 new 创建的 DbContext 实例。

所以你有两个选择:

  • 使用构造函数重载传递连接字符串,该构造函数在创建DbContext 时在 C# 语句中使用字符串,例如new MyContext(connStr)
  • Connection 下拉列表中选择与EF Core 驱动程序的连接,然后使用this 访问DbContext 中的属性。

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多