2012-11-14 57 views
2

我爲一個API項目使用NancyFX和Highway.Data +實體框架。我的模塊依賴於一個存儲庫,它依賴於一個DataContext。我需要的DataContext註冊幷包括web.config中的ConnectionString,所以我有這樣的:爲NancyFX正確註冊DataContext

public class CustomBootstrapper : DefaultNancyBootstrapper 
{ 
    protected override void ApplicationStartup(TinyIoC.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines) 
    { 
     //Gotta specify how to register the DataContext to use the connectionstring 
     container.Register<IDataContext>(
      (c, p) => 
      new DataContext(ConfigurationManager.ConnectionStrings[1].ConnectionString, 
          c.Resolve<IMappingConfiguration>())); 

     base.ApplicationStartup(container, pipelines); 
    } 
} 

這將設置登記所以它使用我的web.config的ConnectionString,而且還採用任何IMappingConfiguration已經被註冊通過自動註冊。

但它看起來像將它註冊爲單例而不是每個Web請求。這意味着數據會在Web請求之間緩存,這不是我想要的。

我已經嘗試添加.AsMultiInstance()以上的註冊,但後來我得到啓動的錯誤:「無法轉換TinyIoC.TinyIoCContainer + DelegateFactory目前登記多實例」

任何人都可以提出我該如何正確註冊這個?

回答

2

根據您的生命週期要求,容器配置應在ConfigureApplicationContainerConfigureRequestContainer中執行。

希望這有助於

+0

如果我提出我的IDataContext登記到ConfigureRequestContainer或RequestStartup,應用程序初始化失敗,因爲模塊在應用程序啓動解決。 –

+0

說什麼?模塊在應用程序啓動時沒有解決 – TheCodeJunkie

+0

是的,我誤解了正在發生的事情。事實證明,我需要在ConfigureRequestContainer中手動註冊更多的Highway.Data要求才能正常工作。 –