我在.net核心下有一个项目。我想在Castle windosr中注册Ef Core上下文,但是我找不到在.net core中的EfCore Wireup上下文的解决方案。谢谢。
答案 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")));