3

用外行的话来说,关于数据库对象的工作单元是什么?我正在研究如何将数据库表转换为 C# 类,并且经常遇到这个术语,但似乎每个人都将其描述为好像您应该已经知道它是什么一样。

4

3 回答 3

6

我将在这里引用Martin Fowler,因为我认为他的意思是我所见过的最清晰、最容易理解的意思之一:

工作单元跟踪您在可能影响数据库的业务事务期间所做的一切。完成后,它会计算出根据您的工作更改数据库需要做的所有事情。

于 2009-09-25T21:14:26.170 回答
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

于 2009-09-25T21:17:00.820 回答
0

在 LINQ to SQL 中,工作单元定义为 ( http://msdn.microsoft.com/en-us/library/bb546187.aspx ):

数据上下文的实例应该具有一个“工作单元”的生命周期。在松散耦合的环境中,一个工作单元通常很小,可能是一个乐观事务,包括对 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 页)。他的简要定义是:

“维护受业务事务影响的对象列表,并协调更改的写入和并发问题的解决。”

于 2009-09-25T21:17:57.043 回答