与UnitOfWork和存储库的多个DBContexts?

时间:2011-08-30 07:05:55

标签: asp.net-mvc ado.net repository unity-container unit-of-work

如何创建多个dbcontexts以及如何将其添加到存储库以供使用?

我当前的示例基于MyFinance, codeplex application,因此这意味着您应该能够查看来源here。 有没有人有想法,我想我应该改变UnitOfWork,RepositoryBase,IDatabaseFactory,......但我不确定如何或用什么。

提前致谢

上述信息 ^^

以下情况是这样的,因为我们有一个疯狂的大“增量”数据,我们将有一个主dbcontext(MyMasterContext),只有用户,他们的角色和信息以及其他细节。

接下来,我们最初会有1台服务器,但我们怀疑这会在接下来的4到6个月内发生变化,这就是为什么我们将下一个dbContext命名为:MySlaveContext。

另外,为了速度,我们还有另外一台服务器只返回JSON请求(MyAjaxContext),例如,为接下来的10个城市提供当前的邮政编码,以及许多其他“自动完成”功能。

你是怎么回事,我不应该使用unitOfWork?在Asp.Net上更新对象MVC确实使用UnitOfWork模式,不是吗? (UpdateModel(object)& saveChanges)。

我将研究TransactionScope,但如果可能的话我想使用UnitOfWork。 您是否有任何关于如何解决当前问题的例子或事情?

2 个答案:

答案 0 :(得分:0)

该项目没有工作单元实施(EF4上下文除外)或IDatabaseFactory

我会使用TransactionScope而不是工作单元实现,只需在每个存储库实现中引用正确的(在构造函数中)EF4 DbContext。

对评论的回复进行更新

如果您只使用数据库,我认为使用通用存储库或工作单元实现没有任何好处。

创建具有所需内容的存储库,不多或少(使用您引用的相应接口)。您的存储库实现完全可以接受EF DbContext。

如果您需要交易支持,请使用TransactionScope

答案 1 :(得分:0)

我建议你看一下NCommon。它为模式提供了实现,例如存储库,工作单元和规范模式。它还支持多个上下文和多个工作单元。

您可以在此处找到更多文档:

http://riteshrao.github.com/ncommon/index.html

文档似乎现在正在完成。希望能得到解决。

在这里发现了作者关于NCommon的一篇旧博客文章和对多个数据库的支持:

http://codeinsanity.com/archive/2010/04/05/unit-of-work-implementation-in-ncommon-1-1.aspx