Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Ninject为PetaPoco绑定_C#_Ninject_Petapoco - Fatal编程技术网

C# 使用Ninject为PetaPoco绑定

C# 使用Ninject为PetaPoco绑定,c#,ninject,petapoco,C#,Ninject,Petapoco,我需要将PetaPoco数据库对象与Ninject绑定。文档()中给出了SimpleInjector的以下示例: var container = new SimpleInjector.Container(); container.RegisterSingleton<IDatabaseBuildConfiguration>(DatabaseConfiguration.Build() .UsingCommandTimeout(180) .WithAutoSelect()

我需要将PetaPoco数据库对象与Ninject绑定。文档()中给出了SimpleInjector的以下示例:

var container = new SimpleInjector.Container();

container.RegisterSingleton<IDatabaseBuildConfiguration>(DatabaseConfiguration.Build()
    .UsingCommandTimeout(180)
    .WithAutoSelect()
    .WithNamedParams()
    .UsingConnectionStringName("myAppsConnection")
    .UsingDefaultMapper<ConventionMapper>(), Lifestyle.Transient);

container.Register<IDatabase>(() => container.GetInstance<IDatabaseBuildConfiguration>().Create())
var container=newsimpleinjector.container();
RegisterSingleton(DatabaseConfiguration.Build())
.使用命令超时(180)
.WithAutoSelect()的
.WithNamedParams()
.使用ConnectionString名称(“myAppsConnection”)
.UsingDefaultMapper(),lifesture.Transient);
container.Register(()=>container.GetInstance().Create())
我的其他绑定都如下所示

Bind<IRepRepo>().To<RepRepoWeb>().InSingletonScope();
Bind().To().InSingletonScope();

但是我找不到一个清晰的方法如何在Ninject中进行绑定。

我现在就让它工作起来了。关键是要利用ToMethod

Bind<IDatabaseBuildConfiguration>().ToMethod(ctx =>
DatabaseConfiguration.Build().UsingCommandTimeout(180)
    .WithAutoSelect()
    .WithNamedParams()
    .UsingProvider<SqlServerDatabaseProvider>()
    .UsingConnectionString("xxxx")
).InSingletonScope();

Bind<IDatabase>().ToMethod(ctx =>
ctx.Kernel.Get<IDatabaseBuildConfiguration>()
.Create()
).InSingletonScope();
Bind().ToMethod(ctx=>
DatabaseConfiguration.Build()。使用CommandTimeout(180)
.WithAutoSelect()的
.WithNamedParams()
.UsingProvider()
.使用连接字符串(“xxxx”)
).InSingletonScope();
Bind().ToMethod(ctx=>
ctx.Kernel.Get()
.Create()
).InSingletonScope();