Использует ли следующий пример использования шаблона работы? - PullRequest
0 голосов
/ 07 октября 2011

Выполняет ли использование комбинированного сеанса / транзакции nHiberbnate ту же функцию, что и шаблон единицы работы?ниже приведен код, найденный в сети.

using (var session = sessionFactory.OpenSession())
  {
    using (var transaction = session.BeginTransaction())
    {
      // create a couple of Stores each with some Products and Employees
      var barginBasin = new Store { Name = "Bargin Basin" };
      var superMart = new Store { Name = "SuperMart" };

      var potatoes = new Product { Name = "Potatoes", Price = 3.60 };
      var fish = new Product { Name = "Fish", Price = 4.49 };
      var milk = new Product { Name = "Milk", Price = 0.79 };
      var bread = new Product { Name = "Bread", Price = 1.29 };
      var cheese = new Product { Name = "Cheese", Price = 2.10 };
      var waffles = new Product { Name = "Waffles", Price = 2.41 };

      var daisy = new Employee { FirstName = "Daisy", LastName = "Harrison" };
      var jack = new Employee { FirstName = "Jack", LastName = "Torrance" };
      var sue = new Employee { FirstName = "Sue", LastName = "Walkters" };
      var bill = new Employee { FirstName = "Bill", LastName = "Taft" };
      var joan = new Employee { FirstName = "Joan", LastName = "Pope" };

      // add products to the stores, there's some crossover in the products in each
      // store, because the store-product relationship is many-to-many
      AddProductsToStore(barginBasin, potatoes, fish, milk, bread, cheese);
      AddProductsToStore(superMart, bread, cheese, waffles);

      // add employees to the stores, this relationship is a one-to-many, so one
      // employee can only work at one store at a time
      AddEmployeesToStore(barginBasin, daisy, jack, sue);
      AddEmployeesToStore(superMart, bill, joan);

      // save both stores, this saves everything else via cascading
      session.SaveOrUpdate(barginBasin);
      session.SaveOrUpdate(superMart);

      transaction.Commit();
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 07 октября 2011

Мартин Фаулер:

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

Да, сессия NH является примером единицы работы.

0 голосов
/ 07 октября 2011

Не обязательно. unitofwork.Start () может содержать следующее

  1. Открытая сессия
  2. Выполнить некоторую инициализацию (например, фильтры add)
  3. Начать транзакцию

unitofwork.end () может содержать следующее

1.Коммит или транзакция отката 2. Конечная сессия

...