【发布时间】:2022-10-18 23:32:17
【问题描述】:
我正在创建一个 .NET Core 6 控制台应用程序。
我有一个实现接口IStorageCompetitorRepository 的存储库类StorageCompetitorRepository。
当我尝试初始化时,以下内容在Program.cs 中中断并显示为空:
_storageCompetitorRepository = serviceProvider.GetService<StorageCompetitorRepository>();
StorageCompetitorRepository 类通过构造函数初始化DbContext。
Program.cs:
using Microsoft.Extensions.DependencyInjection;
class Program
{
private static StorageCompetitorRepository _storageCompetitorRepository;
static void Main(string[] args)
{
// configure services
var services = new ServiceCollection()
.AddTransient<IStorageCompetitorRepository, StorageCompetitorRepository>();
// create service provider
var serviceProvider = services.BuildServiceProvider();
_storageCompetitorRepository = serviceProvider.GetService<StorageCompetitorRepository>();
bool runLoaderTool = true;
while (runLoaderTool)
{
runLoaderTool = ChooseElasticIndexMenu(runLoaderTool, _storageCompetitorRepository);
}
}
public static bool ChooseElasticIndexMenu(bool runLoaderTool, StorageCompetitorRepository storageCompetitorRepository)
{
// didn't add the full code that returns the boolean all you need
// to know that the repo class method is called here
storageCompetitorRepository.GetStorageCompetitors();
}
}
StorageCompetitorRepository:
public class StorageCompetitorRepository : IStorageCompetitorRepository
{
string DatabaseServer = ConfigurationManager.AppSettings["DataBaseServer"];
private readonly DevModelContext _devModelContext;
public StorageCompetitorRepository(DevModelContext devModelContext) => _devModelContext = devModelContext;
public List<storage_competitor> GetStorageCompetitors()
{
try
{
var ctx = _devModelContext.StorageCompetitors;
var storageCompetitorList = (from sc in ctx
where sc.active == true && sc.id_period == (from s in ctx select s).Max(s => s.id_period)
select sc).Distinct()
.OrderBy(sc => sc).ToList();
var countStorageCompetitors = storageCompetitorList.Count();
Console.WriteLine($"{countStorageCompetitors} Storage Competitors were found in SQL Server : {DatabaseServer} Database : Competitors");
return storageCompetitorList;
}
catch
{
return new List<storage_competitor>();
}
}
}
DevModelContext:
public class DevModelContext : DbContext
{
string connectionString = ConfigurationManager.ConnectionStrings["connCompetitorsDev"].ConnectionString;
public DevModelContext(DbContextOptions<DevModelContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(connectionString);
}
public DbSet<storage_competitor> StorageCompetitors { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<storage_competitor>().ToTable("storage_competitor");
}
}
为什么将 repo 类的初始化添加为临时服务时显示为 null?
任何想法或建议将不胜感激。
【问题讨论】:
标签: c# .net-core dependency-injection entity-framework-core console-application