【发布时间】:2021-06-11 12:07:40
【问题描述】:
对这一切都很陌生,如果我做了任何愚蠢的事情,请道歉。
我正在尝试实现一个与我已设置的本地 SQL Server Express 数据库通信的工作项目。
我将连接字符串存储在我的AppSettings.Json 中,如下所示
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"DBConnection": "Server=localhost\\SQLEXPRESS;Database=TwitterTesting;Trusted_Connection=True;"
}
}
然后我有一个DBContext.cs 文件来存储我的数据库结构。目前我只有一张表'tweets'。
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WorkerService1.Entities;
namespace WorkerService1
{
public class DataContext : DbContext
{
public DataContext(DbContextOptions options) : base(options)
{
}
public DbSet<tweets> tweets { get; set; }
}
}
Tweets.cs 仅具有列结构。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace WorkerService1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddDbContextPool<DataContext>(
options => options.UseSqlServer(hostContext.Configuration.GetConnectionString("DBConnection"))
);
services.AddHostedService<Worker>();
});
}
}
上面是我的program.cs 文件,我试图在其中添加DBContext 的实现,但编译时出现以下错误:
System.AggregateException:'某些服务无法构造(验证服务描述符时出错'ServiceType:Microsoft.Extensions.Hosting.IHostedService Lifetime:Singleton ImplementationType:WorkerService1.Worker':无法使用范围服务'WorkerService1。来自单例 'Microsoft.Extensions.Hosting.IHostedService' 的 DataContext'。)
我在网上的理解是与依赖注入有关,但我真的很困惑我需要做什么。
任何帮助将不胜感激! :)
【问题讨论】:
-
您在哪里定义 WorkerService1.DataContext 以及如何将其添加到 DI?
-
@SaeedEsmaeelinejad 抱歉,我不太清楚你的意思?
标签: c# sql-server entity-framework-core