Что такое единица измерения в отношении объектов базы данных?

StackOverflow https://stackoverflow.com/questions/1479608

Вопрос

С точки зрения непрофессионала, что такое единица работы в отношении объектов базы данных?Я изучаю, как преобразовать таблицы базы данных в классы C #, и я часто сталкиваюсь с этим термином, но, кажется, все описывают его так, как будто вы уже должны знать, что это такое.

Это было полезно?

Решение

Я процитирую Мартин Фаулер здесь, поскольку я думаю, что его значение является одним из самых ясных и понятных, которые я видел:

Единица измерения отслеживает все, что вы делаете во время бизнес-транзакции, которая может повлиять на базу данных.Когда вы закончите, он определит все, что нужно сделать, чтобы изменить базу данных в результате вашей работы.

Другие советы

В основном это означает работу, необходимую для завершения атомарного действия, напримерперевод денег между двумя текущими счетами.

Пример (в псевдокоде)

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

В 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

В книге Мартина Фаулера "Шаблоны архитектуры предприятия" этой теме посвящено довольно много страниц (стр. 184-194).Его краткое определение таково:

"Поддерживает список объектов, затронутых бизнес-транзакцией и координирует внесение изменений и разрешение проблем параллелизма ".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top