среда, августа 30, 2006

SQL IntelliSense - мелочь, а приятно.

После работы в Visual Studio 2005, да еще и с plug-in'ом ReSharper, жить без поддержки IntelliSense я больше не могу.

SQL Prompt - бесплатная утилита, добавляющая поддержку IntelliSense к основным редакторам SQL (Query Analyzer, SQL Server 2005 Management Studio, Visual Studio 2005, Visual Studio .NET 2003, SQL Server 2000 Enterprise Manager, UltraEdit32).

Особенно порадовала автоматическая генерация ON-части оператора JOIN. Работает она разумеется только при расставленных foreign keys.

SQL Prompt in action

понедельник, августа 28, 2006

Транзакции в .NET 2.0

Namespace System.Transaction, и новый объект TransactionScope делают тривиальной задачу использования транзакций в новых приложениях и добавление поддержки транзакций в существующие (при условии что они были портированы на .NET 2.0).

В моем случае мне надо было добавить поддержку транзакций в приложение, используеющее Data Access Application Block (DAAB). В примере из документации по DAAB используется объект DbTransaction. Лично мне этот метод кажется не удобным по сравнению с использованием TransactionScope. Так как объект DbTransaction надо предавать как параметр в вызовы методов ExecuteXxxxx, то нужно организовать flow этого объекта через/между класс(ы) бизнес логики. Особенно это не удобно при добавлении поддержки транзакций к существующему приложению.

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

using(TransactionScope scope = new TransactionScope())
{
     DoSomeActionInTransaction();
     DoAnotherActionInTheSameTransaction();

     scope.Complete();
}

Вот так вот  все легко и прозрачно :)

P.S. Еще один дополнительный плюс TransactionScope по сравнению с DbTransaction в том, что он не принадлежит namespace System.Data. Соответственно, поддерживаются не только DB-транзакции. Очень удобно когда бизнес логика и доступ к данным разделены.