Связывание для PetaPoco с Ninject - PullRequest
0 голосов
/ 19 января 2020

Мне нужно связать объект базы данных PetaPoco с Ninject. В документации (https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Fluent-Configuration) приведен следующий пример для 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())

Все остальные мои привязки выглядят следующим образом.

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

Но я не могу найти четкий способ, как сделать это связывание в Ninject.

1 Ответ

0 голосов
/ 21 января 2020

У меня сейчас работает. Ключ должен использовать 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();
...