.net – 不知道如何使用WinForm应用程序的依赖注入存储库模式工
(为文字墙道歉:) :))
概要 使用依赖注入与我的Winfor应用程序正在创建大量的Repository上下文.我不知道我使用的方式是对还是错,或常见的做法是什么. 细节 在过去的6个月中,我一直在使用存储库模式来构建单元O工作模式的ASP.NET MVC应用程序.除此之外,我一直在使用依赖注入对所有这些Web应用程序取得一些成功. 所以这是我连接我的仓库的一个例子. public EntityFrameworkRepositoryRegistry() { For<IUnitOfWork>() .HybridHttpOrThreadLocalScoped() // Lifecycle of the object. .Use<SqlServerContext>() // My EF Context. .Ctor<string>("connectionString").Is("name=SqlServer_EF") .Ctor<string>("defaultContainerName").Is("Entities"); // Ayende's EFProf application :) EntityFrameworkProfiler.Initialize(); Scan(x => { x.TheCallingAssembly(); x.ExcludeNamespaceContainingType<Fake.FakeContext>(); x.WithDefaultConventions(); } ); } 好的 – 很棒 >我假设生命周期是Web方案中正确的. KEWL. 现在,对于我的WinForm应用程序,我最初创建了一个单一的 对于这个win应用程序,它会点击DB查找所有的文本 问题是,这个构想在所有的分析者中都是分享的 所以我添加了一些依赖注入,并使用上面的注册表代码.排序相同的事情 – 很多严重的错误.这是因为单个线程再次创建了一个上下文 – > winform. 所以,我现在调整了上下文注册表如下: public EntityFrameworkRepositoryRegistry(bool isForTheWeb) { if (isForTheWeb) { For<IUnitOfWork>() .HybridHttpOrThreadLocalScoped() .Use<SqlServerContext>() .Ctor<string>("connectionString").Is("name=SqlServer_EF") .Ctor<string>("defaultContainerName").Is("Entities"); } else { For<IUnitOfWork>() .Use<SqlServerContext>() .Ctor<string>("connectionString").Is("name=SqlServer_EF") .Ctor<string>("defaultContainerName").Is("Entities"); } EntityFrameworkProfiler.Initialize(); Scan(x => { x.TheCallingAssembly(); x.ExcludeNamespaceContainingType<Fake.FakeContext>(); x.WithDefaultConventions(); }); } 所以对于WinForm应用程序,它现在不设置生命周期.这个 所以,我不知道这是否是正确的做事方式. 所以我的应用程序实际上有25个不同的计时器来检查文件 这些文件中的每一个都被解析,是否是自己的线程? 它有这么多背景的原因是因为如下 public SqlServerContext(string,string); public GameFileRepository (IUnitOfWork); public LogEntryRepository(IUnitOfWork); public AlertRepository(IUnitOfWork); ... etc.. 并为主要服务… public PunkBusterParser(IUnitOfWork,IGameFileRepositry,ILogEntryRepository,ILoggingService); 所以服务需要一个UoW,每个存储库也都需要 我确定我没有正确地结构化… 任何建议都会真诚感谢!
Ayende的这篇文章可能会为您提供一些关于如何在桌面应用程序中管理工作单位的洞察(一般的想法是使用“每个演示者的会话”):
http://msdn.microsoft.com/en-us/magazine/ee819139.aspx
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |