linq2sql - куда подключить транзакцию (репозиторий или bll)? - PullRequest
0 голосов
/ 25 марта 2010

Мое приложение использует бизнес-уровень, который вызывает хранилище, использующее linq to sql.

У меня есть класс Item, который имеет свойство типа enum и свойство ItemDetail.

Мне нужно реализовать метод удаления, который:

(1) всегда удаляйте элемент (2) если item.type имеет тип XYZ, а ItemDetail не равен NULL, также удалите ItemDetail.

Мой вопрос: где должна быть эта логика?

Если у меня это есть в моей бизнес-логике, которую я бы предпочел, это включает два отдельных вызова репозитория, каждый из которых использует отдельный текст данных. Я должен был бы обернуть оба вызова - System.Transaction, которая (в sql 2005) превращается в распределенную транзакцию, которая не идеальна.

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

Мысли

Carrie

1 Ответ

0 голосов
/ 30 марта 2010

Я не уверен, что действительно понял ваш вопрос, но если это один репозиторий - могли бы вы предоставить вашему репозиторию два разных метода, обрабатывающих два типа удаления? Тогда логика для определения того, какой метод репозитория будет вызываться, останется на бизнес-уровне, где он кажется наиболее подходящим?

Или, может быть, вы найдете помощь в этом посте: Где должна быть граница транзакции в шаблоне хранилища?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...