访问实体框架核心6中的连接字符串



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

我遇到的唯一问题是尝试使用Name={connection string name}参数,而不是嵌入连接字符串。该应用程序是一个简单的Console应用程序(而不是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-DbContextName参数找到我的连接字符串?查看了错误中的链接,但没有帮助-它适用于ASP.NET应用程序。

如果有人对此感到困惑,下面的文档应该会对您有所帮助。

对于WPF应用程序,您至少应该为scaffold命令的工作发布以下代码:

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中,以防与项目模板匹配。

最新更新