使用 DI 将参数传递给 DbContext

Jen*_*itz 9 c# entity-framework asp.net-core

我想向 DBContext 传递一个附加参数,如下所示

string myParam="xx";
string con="connenctionstring";
services.AddDbContext<IDbContext, DbContext>(
    options =>options.UseSqlServer(con, myParam)
            );
Run Code Online (Sandbox Code Playgroud)

在 DBContext 中:


DbContext(DbContextOptions<AppDbContext> options, string myParam)
            : base(options)
        {           
        
        }

Run Code Online (Sandbox Code Playgroud)

有可能吗?谢谢

Moh*_*our 5

DbContext您不能以这种方式传递依赖关系。

首先,创建一个类:

class MyClass 
{
    public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后MyClass作为依赖项传递给DbContext

MyDbContext(DbContextOptions<MyDbContext> options, MyClass myParam)
    : base(options)
{           
    //* Intentionally empty            
}
Run Code Online (Sandbox Code Playgroud)

然后注册MyClass为单例ServiceCollection

services.AddSingletone(new MyClass { MyProperty = "xx" });
services.AddDbContext<MyDbContext>(options =>options.UseSqlServer(con));
Run Code Online (Sandbox Code Playgroud)