我有一個的Windows服務(或Windows窗體),當一個計時器過後,我的服務完成一些任務。實體框架+生活時間+結構圖+工作單元+ Windows窗體?
只要我的應用程序正在運行,我不想僅使用一個實體框架上下文。
我看到會話工廠在NHibernate樣本。有沒有像EF?
這是我如何使用EF + StructureMap我ASP.NET MVC或應用:
應用程序啓動:
ObjectFactory.Configure(Function(config) config.For(Of IUnitOfWork).HybridHttpOrThreadLocalScoped.Use(Of UnitOfWork)())
結束請求:
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects()
我的UnitOfWork已啓動每個Web請求,並配置請求結束之後。
在我贏應用場景,UOW當定時器經過和佈置我的工作是完整的,我不想處理它自己之後應該開始。
我該如何在Windows窗體應用程序中實現這樣的功能?
如果我用我的註冊UOW:HybridHttprThreadLocalScoped
有每個線程只是一個UOW,如果我處置它,就不見了。
編輯:
我有我的倉庫+服務在DLL,我想使用它們兩個網絡還是贏應用,正因爲如此我用HybridHttpOrThreadLocalScoped
。
更新2:
這裏是我的庫:
Public Class ProductRepository
Private ReadOnly _databaseFactory As DataAccess.IDatabaseFactory
Public Sub New(ByVal databaseFactory As DataAccess.IDatabaseFactory)
_databaseFactory = databaseFactory
End Sub
Public Function GetById(ByVal id As Integer) As Product
Return (From item In _databaseFactory.GetDataContext.Products Where item.ProductId = id).FirstOrDefault
End Function
End Class
,這裏是我的服務:
Public Class ProductService
Private ReadOnly _Repository As ProductRepository
Public Sub New(ByVal repository As ProductRepository)
_Repository = repository
End Sub
Public Function GetById(ByVal id As Integer) As Product
Return _Repository.GetById(id)
End Function
End Class
而且我使用StructureMap。結構圖需要我的車DatabaseFactory和UoW終身在網絡情景。但我不知道贏得應用程序該做什麼。我可以管理自己的生命週期我自己,但我正在尋找一種方式,以便StructureMap將處理它我爲,因爲它處理Web應用程序的生命週期。
Afshin我有類似的問題像你的。你能分享你的最終解決方案嗎? – Shahin 2013-04-08 14:36:00
@shaahin:我目前的解決方案並不完美。我會盡力將它添加到這篇文章儘快。在web應用程序中,請求的開始和結束由框架指示,但在Windows應用程序中不是這樣的,所以我手動進行並且模擬它。例如:在某個按鈕的點擊處理程序方法(在贏取應用程序)中,我正在向自己的基礎結構發出一個請求的開始和結束的信號。 – 2013-04-09 02:41:08