Как вы управляете соединениями с базами данных и транзакциями между вставками объектно-ориентированным способом, используя VB.net или C #? - PullRequest
1 голос
/ 16 апреля 2009

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

В текущем проекте я повторяю, копирую и вставляю код вставки SQL Server и переносу его в классы со свойствами, методами и т. Д. *

Одна из проблем, с которыми я сталкиваюсь, заключается в том, как поддерживать низкое количество подключений к базе данных при выполнении вставок между несколькими объектами и, следовательно, несколькими таблицами.

В процедурном плане я использовал транзакцию ADO.net для записи в одну таблицу, а затем на основе идентификатора вставленной записи записал дополнительную информацию в другую таблицу - не закрывая соединение, пока не будет выполнено второе задание. Я использую транзакцию, поэтому, если последующая вставка завершится неудачно, первую вставку можно будет отменить, и, используя try, catch, finally, закроет соединение, если оно успешно или неудачно.

Как вы справляетесь с этим в объектно-ориентированном мире?

РЕДАКТИРОВАТЬ: Спасибо всем ответы. Я понял Вот еще один вопрос, который также помог уточнить это для меня: ASP.NET / ADO.NET: Обработка многих соединений с базой данных внутри объекта .NET?

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

Хм, не сильно отличается.

Ваши «объекты» (я предполагаю, что вы имеете в виду, что вы используете классы, а экземпляры этих классов представляют «элементы» в вашей бизнес-области), не должны заботиться об этих транзакциях. То есть они не должны знать о транзакциях и не должны отвечать за обработку транзакций.

Транзакции должны инициироваться и обрабатываться другим объектом. Какой-то «менеджер». Этот класс запускает, фиксирует и откатывает транзакции.
Вы будете использовать этот менеджер в своем приложении, например, в своей форме.
Для меня это единственный правильный способ обработки транзакций, поскольку ваше приложение знает «контекст». Ваше приложение знает, сколько обходов вам нужно сделать с БД, приложение знает, как долго должна длиться транзакция. Ваши объекты не знают этого.

0 голосов
/ 16 апреля 2009

Что касается управления соединениями, не надо. .Net будет хранить их для вас и эффективно их перерабатывать. Попытка утилизировать их самостоятельно приведет к снижению производительности.

Кроме этого, звучит так, будто вы все делаете правильно, вставляете, получаете ID, вставляете снова, используя то же соединение в этой области.

...