【问题标题】:Accessing the connection string in Entity Framework Core 6在 Entity Framework Core 6 中访问连接字符串
【发布时间】:2022-10-25 06:17:14
【问题描述】:

我在 .NET 6 中使用 Entity Framework Core 6 做我的第一个应用程序,首先使用数据库和Scaffold-DbContext 命令来创建DbContext

我遇到的唯一问题是尝试使用 Name={connection string name} 参数而不是嵌入连接字符串。该应用程序是一个简单的控制台应用程序(不是 ASP.NET 应用程序),带有一个 app.config 文件(由于其他原因不能使用 JSON 配置文件)。我将连接添加到配置文件中,例如:

<connectionStrings>
    <add name="MyDatabase" 
         connectionString="Server=xxxxxxx;Database=xxxxxxx;Trusted_Connection=True"/>
</connectionStrings>

我收到此错误:

使用了命名连接字符串,但在应用程序的配置中找不到名称“ClientServices”。请注意,仅在使用“IConfiguration”和服务提供者时才支持命名连接字符串,例如在典型的 ASP.NET Core 应用程序中。请参阅https://go.microsoft.com/fwlink/?linkid=850912 了解更多信息。

我需要做什么才能让Scaffold-DbContext Name 参数可以找到我的连接字符串?查看错误中的链接,但没有帮助 - 用于 ASP.NET 应用程序。

【问题讨论】:

  • 是否有任何理由避免使用 ConfigureService 方法的 ASP.Net 类 Startup 类?您可以拥有类似 ASP.Net 的服务配置类吗?
  • 控制台应用程序可以使用相同的通用主机/DI/appsettings.json 模式。使用顶级构建器或CreateHostBuilder 方法,命令行工具可以发现您的配置和类型。
  • 非常感谢!我会试试的。

标签: c# entity-framework-core asp.net-core-scaffolding


【解决方案1】:

如果有人为此苦苦挣扎,这里的documentation 应该可以帮助您。

对于 WPF 应用程序,您至少应该添加以下代码以使脚手架命令起作用:

  using Microsoft.Extensions.Configuration;
  using Microsoft.Extensions.DependencyInjection;
  using Microsoft.Extensions.Hosting;
  using System.Windows;


  /// <summary>
  /// Interaction logic for App.xaml
  /// </summary>
  public partial class App : Application
  {
    public App()
    {
      using IHost host = Host.CreateDefaultBuilder().Build();

      var config = host.Services.GetRequiredService<IConfiguration>();

      host.Run();
    }
  }

将代码放在 Program.cs/Main 中,以防它与您的项目模板匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2015-06-09
    • 1970-01-01
    • 2020-01-07
    • 2023-03-05
    相关资源
    最近更新 更多