问题标签 [unit-of-work]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
457 浏览

nhibernate - 如果我不关心交易等,工作单元是否更有效率?

如果我的网页上有 10 个数据库调用,并且它们都不需要任何事务等。它们只是从数据库中获取数据(读取),我还应该使用工作单元类吗?

是因为为每个数据库调用创建一个新会话太昂贵了吗?

0 投票
1 回答
921 浏览

c# - 工作单元模式的 .net 参考实现是什么?

工作单元模式是一种在上下文中跟踪域上所有操作并在完成您的(可能)复杂逻辑时一次性应用它们的方法。

当与 ORM(例如 NHibernate)一起使用时,最好使用共享 ISession(或 Linq 2 Sql 中的 DataContext)来实现工作单元,该共享 ISession(或 Linq 2 Sql 中的 DataContext)用于对底层数据库的每个操作。

正确实施可能很棘手,尤其是在处理服务器应用程序时,主要是 ASP.Net MVC 或 ASP.Net Webforms。

我已经涉足了 Rhino.Commons(面向 NHibernate)中的实现,并且我知道其他几个,但没有很好地掌握它们的优点和缺点。

最常用的是什么,以及如何将它们无缝集成到 ASP.Net MVC(或 WebForms,但我最感兴趣的是 MVC)中?

0 投票
1 回答
2301 浏览

linq-to-sql - 工作单元设计模式

有没有人有关于使用 LINQ to SQL 的工作单元模式的实际示例的任何好的链接

0 投票
3 回答
5318 浏览

c# - 为什么我要在 NHibernate 会话之上使用工作单元模式?

我什么时候会在 NHibernate 已经提供的基础上编写 UoW 实现?任何现实世界的例子?

0 投票
1 回答
604 浏览

repository - 工作单元和 L2S 数据上下文

Quick Q 为您提供模式专家。

我想要一个与实际数据访问技术分离的存储库模式,因为我还没有决定,我希望它是灵活的。所以,这可能是 L2S、L2E、NHibernate、Lightspeed 或任何东西。

但是我对这个 UnitOfWork 事情感到困惑。

在 L2S 世界中,这似乎是您的 DataContext。

但是对于非 L2S 的世界呢,假设我使用的是手写 SQL。

我的问题是谁做什么?在我的 Repo.Save() 方法中,是否应该调用 UnitOfWork.Commit 然后生成所需的 INSERT/UPDATE SQL ?

不期待一个明确的答案,但一些讨论会很好,只是为了确保我走在正确的轨道上!

谢谢

0 投票
1 回答
555 浏览

datacontext - 数据上下文和工作单元

我是面向对象编程的新手。我已经做了 8 年的程序程序员。尽管 Linq to Sql 在未来可能不是一个好的选择,但它仍然是一个很好的轻量级 ORM。如果我想使用 LTS 作为我的数据访问,并且我的 UI 有一个 MVP 模式,那么我的问题如下

在 MVP 模式中,您通常为每个视图创建一个 Presenter。现在假设我的一个观点有两个工作单元在起作用。假设我有一个作为一个 UOW 的客户编辑屏幕和一个与我的另一个 UOW 在同一页面上的订单订单详细信息屏幕。我的想法是我这里有两个演示者引用 DataContext 来支持乐观并发。这是企业应用程序中的典型做法吗?

0 投票
3 回答
15547 浏览

asp.net - Unity 中的单例每个调用上下文(Web 请求)

几天前,我遇到了 ASP.Net 线程问题。我希望每个 Web 请求都有一个单例对象。我的工作单元实际上需要这个。我想为每个 Web 请求实例化一个工作单元,以便身份映射在整个请求中都是有效的。这样,我可以使用 IoC 将我自己的 IUnitOfWork 透明地注入到我的存储库类中,并且我可以使用相同的实例来查询然后更新我的实体。

由于我使用的是 Unity,所以我错误地使用了 PerThreadLifeTimeManager。我很快意识到 ASP.Net 线程模型不支持我想要实现的目标。基本上它使用一个线程池并回收线程,这意味着我每个线程得到一个 UnitOfWork !但是,我想要的是每个 Web 请求一个工作单元。

一点谷歌搜索给了我这个很棒的帖子。这正是我想要的。除了很容易实现的统一部分。

这是我对 PerCallContextLifeTimeManager 的统一实现:

当然,我用它来注册我的工作单元,代码类似于:

希望它可以节省一些时间。

0 投票
1 回答
755 浏览

repository-pattern - UnitOfWork 模式和原子操作

我不能 100% 确定我已经正确地实现了我的 Repository 和 UnitOfWork 模式,但是我看不出它还能如何工作。

例如,我有两个对象,Apple 和 Orange。

Apple 通过 OrangeID 加入 Orange,如下所示:

我想创建一个新的 Apple 和一个新的 Orange,并且我想适当地设置 ID 链接。但我有一个问题。在将 Orange 保存到数据库之前,我不会知道 OrangeID。

所以这意味着我将拥有以下内容:

这不是原子操作,除非我有一个位于上述之外的事务。但我认为这是 UnitOfWork 应该处理的?或者我的 UnitOfWork.Commit() 在写入数据库时​​应该分配适当的值吗?

任何帮助/提示将不胜感激,谢谢邓肯

0 投票
2 回答
1787 浏览

dependency-injection - 找到我的 IUnitOfWork 的设计模式是什么?

我已经实现了一个不知道持久性的存储库模式。存储库实现仅与我的实体对象IUnitOfWorkITable<T>接口交互。目的是IUnitOfWork不重用,而是代表单个事务。到目前为止,我已经实现了 in-memory 以及 Linq-to-Sql 的IUnitOfWorkand版本ITable<T>

我的问题是,由于IUnitOfWork注入到存储库中,我最终需要知道如何IUnitOfWork在使用存储库的地方实例化一个新的。由于这是应该可以插入的主要部分,所以感觉就像我做错了什么。一般的使用模式是这样的:

现在看来,我需要一些其他模式来允许应用程序中的每个存储库使用来获得正确的工作单元(例如内存中、L2S 等)。

最适合这个的模式是什么?我看过福勒关于这个话题的讨论,但他的例子似乎都不是完全合适的。我已经觉得我拥有的抽象量比我想要的要多,所以构建另一个间接性似乎过度了。

目前,我倾向于某种应用程序范围的提供程序,它可以配置为生成正确的IUnitOfWork. 我是偏离基地还是这是真正实现不可知论所需要的?

0 投票
1 回答
111 浏览

nhibernate - NHibernate 和 Rhino 存储库的奇怪保存行为

我在使用 NHibernate 时遇到了一些奇怪的行为。我正在从存储库中检索学习者列表,并根据需要对其进行更新,奇怪的是当我保存第一个学习者时,对所有学习者所做的更改都被提交到数据库中。

任何想法为什么?我没有启用缓存。我知道它与事务有关,因为即使对 save 方法的调用被注释掉,更改也会持续存在。

这是我的映射: