我有一个的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