用外行人的话来说,关于数据库对象的工作单元是什么?我正在研究如何将数据库表转换为C#类,我经常遇到这个术语,但每个人似乎都在描述它,好像你应该已经知道它是什么。
答案 0 :(得分:6)
我在这里引用Martin Fowler,因为我认为他的意思是我见过的最清晰,最易理解的意思之一:
工作单元会跟踪您在业务事务中可能影响数据库的所有操作。完成后,它会计算出因工作原因需要更改数据库的所有内容。
答案 1 :(得分:2)
基本上它意味着完成原子动作所需的工作,例如在两个支票账户之间转账。
示例(伪代码)
Procedure TransferBetweenAccounts(Amount, Account source, Account target)
Begin Transaction
Debit source account By (Amount) }----Unit of
Credit target account By (amount) }----Work
End Transaction
If Transaction Failed
Roll Back
一篇很好的MSDN文章描述了工作单元和持久性无知: http://msdn.microsoft.com/en-us/magazine/dd882510.aspx
答案 2 :(得分:0)
在LINQ to SQL中,工作单元定义为(http://msdn.microsoft.com/en-us/library/bb546187.aspx):
数据上下文的实例应该 拥有一个“工作单位”的一生。 在松散耦合的环境中,a 工作单位通常很小, 也许是一个乐观的交易, 包括一个电话 的SubmitChanges。因此,数据 上下文被创建并处置 方法范围。如果是工作单位 包括对业务规则的调用 逻辑,那么一般你会想要 为此保留DataContext实例 整个操作
了解工作单元对于LINQ to SQL的成功非常重要。看看这个页面(一个更新场景),关于工作单元模式如何适合LINQ to SQL:
http://aspalliance.com/1414_LINQ_to_SQL_Part_4__Updating_our_Database.3
Martin Fowler的“企业架构模式”一书有很多专门讨论该主题的内容(第184-194页)。他的简短定义是:
“维护受影响的对象列表 通过商业交易和 协调写作的变化 和并发的解决方案 问题。“