如何在Castle Windsor中注册Ef核心数据库上下文?

时间:2018-08-12 06:14:12

标签: entity-framework .net-core castle-windsor castle

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

2 个答案:

答案 0 :(得分:3)

如果要执行此操作,首先需要知道您有一个Context,该Context的DbContextOptionsBuilder参数为DbContextOptionsBuilder参数(如果您添加了这些构造函数),则也需要注册它,现在代码“下面编写的内容使您不那么自我-足以使用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---")));

答案 1 :(得分:0)

另一种选择是:

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")));