2012-05-12 138 views
0

我已經實現了存儲庫& nhibernate的工作模式單元。我使用ninject作爲DI。我擁有多個數據庫,因此我對不同的回購協議有不同的工作單元實現。我用注入IDatabaseConnection類型接口的工作單位:注入相同的實例

public interface IDatabaseConnection 
{ 
    ISessionFactory SessionFactory { get; } 
} 

和單位的工作:

public class SomeUnitOfWork : GenericUnitOfWork 
{ 
    [Inject] 
    public SomeUnitOfWork(IDatabaseConnection connection) 
     : base(connection) 
    { 
    } 

有的回購

[Inject] 
    public IRepository<Transaction> Transactions { get; private set; } 

    [Inject] 
    public IRepository<Paramdef> Paramdefs { get; private set; } 

    [Inject] 
    public IRepository<Transmap> Transmaps { get; private set; } 

    [Inject] 
    public IRepository<User> Users { get; private set; } 

GenericRepository實現,我在ninject結合IRepository時使用模塊具有等待ISession的參數可以從ISessionFactory中取回。我該怎麼做?

回答

1

您必須將ISession注入到您的UoW而不是工廠,以便它可以由Ninject創建。會議應在某個範圍內,例如用於Web應用程序的InRequestScope。然後將一些條件添加到會話綁定中,以定義要使用哪一個。例如。

Bind<ISession>().ToMethod(context => context.Kernel.Get<ISessionFactory>("DB1")).WhenAnyAnchestorNamed("UoW1").InRequestScope(); 
Bind<SomeUnitOfWork>().ToSelf().Named("UoW1"); 
相關問題