如何向 Castle windsor 注册 Ef 核心数据库上下文?

How to register Ef core db context with Castle windsor?

我有一个.net core下的项目,我想在Castle windosr中注册Ef Core Context,但是我找不到.net core下EfCore Wireup context的解决方案,谢谢。

如果你想这样做,首先你需要知道你有一个有 DbContextOptionsBuilder 参数的 Context 如果你添加了这些构造函数,你也需要注册它,现在代码我在下面写的让你不那么自给自足地使用 OnConfiguring 方法。

   public static class DbContextFactoryBuilder
{
    public static IDbContext Create(string connectionString)
    {
        var result = new MyDbContext(new DbContextOptionsBuilder().UseSqlServer(connectionString).Options);
        return result;
    }
}

和城堡注册码

container.Register(Component.For<MyDbContext>().UsingFactoryMethod(c => DbContextFactoryBuilder.Create(@"---your connection string---")));

另一种选择是:

public class MyContext : DbContext
{
    private readonly string connectionString;

    public MyContext (string connectionString)
    {
        this.connectionString = connectionString;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(this.connectionString);
    }
}

Component.For<MyContext>().DependsOn(Property.ForKey<string>().Eq("your connection string")));