如何在 Class 库中添加 AddDbContext(没有 Startup.cs 文件)?

How to add AddDbContext in Class Library (No Startup.cs file)?

我们正在设置 Monitor Service(Worker Service + Class 库 A、B、C)作为 Worker Service 应用程序,而插件(DatasourceMonitor.OrderImport)是 Class Library .NetCore Framework 有 classes X、Y、Z(它们来自 class A、B、C)。

这些独立的 Class Libraries 可以访问具有独立连接(微架构)的 DbContext(此处为 KPDbContext)。 Plugins-> X.dll 添加到 Worker Service。

文件夹结构如下:

在早期版本中,我们在 Worker Service 的 Program.cs 中添加了 DBContext as

services.AddDbContext<KPDbContext>(options => 
options.UseSqlServer(config.GetSection("ConnectionStrings:ServerAddress").ToString()));

但现在KPDbContext存在于另一个项目中,我们需要根据classes X,Y,Z.

单独访问

DEMOCODE(问题在这里)

 public class X : A
    {
        
        public void Run(ServiceSettings settings, DataSource dataSource, string path)
        {
            // How to activate this KPDbContext ??????
            using (var entities = new KPDbContext ())
            {
                entities.Interfaces.Add(new Interface()
                    {
                        CreatedDateTime = now,
                        TableId = 0,
                        TableName = "Order"                        
                    });
                    entities.SaveChanges();
              }

我在上面创建了一个连接字符串 appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "data source=auto123.com;initial catalog=KAPPDBS;user id=sa;password=sa123!;MultipleActiveResultSets=True"
  }
}

请多多指教,深陷其中。如果有任何文件,也请发送 link。

Class 图书馆没有 setup.cs 但你能用简单易行的方法解决这个问题吗?

首先: 在class库项目[=中创建一个class ex ModelsSetting.cs 16=]

其次:为return创建一个函数connectionString

代码

    public static class ModelsSetting
    {
         public static string ConnectionString
         {
                get => "yourConnectionString"; // you can get form App.config fie
         }
         public static void Configure(this DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseSqlServer(ConnectionString);
    }

第三次:改YourContext

if (!optionsBuilder.IsConfigured)
          optionsBuilder.Configure();