Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Профессинальное программирование на .NET


Профессинальное программирование на .NET


Выпуск 13

Здравствуйте, уважаемые подписчики!

Блог рассылки - DeveloperGuru.NET. Не стесняйтесь задавать вопросы и писать отзывы на сайте или на email.

В этом выпуске я хочу представить вашему вниманию перевод некоторых полезных советов для программистов на .NET Framework из англоязычного блога .NET Tip of The Day. В самом блоге много других интересных советов, поэтому рекомендую обратить на него внимание.

В рассылке приведен полный вариант статьи, но по этому адресу вы можете найти эту же статью, но с расскрашенными блоками кода.

Автоматическая вставка кавычек для значений атрибутов

HTML/ASPX редактор в Visual Studio может автоматически вставлять кавычки, когда вы вводите имя атрибута и знак "=". Для этого включете опцию Tools | Options... | Text Editor | HTML | Format | Insert attribute value quotes when typing.

Не генерируйте ненужные WinForm переменные для элементов управления Label

Большинство Windows форм содержит элементы управления Label, при помощи которых выводится статический текст. Как правило, с этим текстом ничего не надо делать программно. Чтобы не засорять код лишними переменными уровня класса формы, которые создаются автоматически дизайнером для каждого элемента управления, выберите этот элемент управления и установите свойство GenerateMember в false.

Два подхода к добавлению/апдейту записей в базе

Одна из главных задач при выполнении операции update/insert - это минимизация блокировок. Рассмотрим два наиболее распространенных подхода:

1. Апдейт, если @@ROWCOUNT = 0 то добавление

UPDATE Table1 SET Column1 = @newValue WHERE Id = @id
IF @@ROWCOUNT = 0
BEGIN
    INSERT INTO Table1 (Id, Column1) VALUES (@id, @newValue)
END

Этот метод следует использовать, если вы знаете, что в большинстве случаев запись существует в базе (например, хранение настроек в специальной таблице). В противном случае должен быть использован второй метод.

2. Если запись существует, то апдейт, иначе - добавление

IF EXISTS(SELECT * FROM Table1 WHERE Id = @id)
BEGIN
    UPDATE Table1 SET Column1 = @newValue WHERE Id = @id
END
ELSE
BEGIN
    INSERT INTO Table1 (Id, Column1) VALUES (@id, @newValue)
END

Этот подход хорош, если в большинстве случаев запись не существует и будет выполнен INSERT.

P.S. Оба способа следует использовать с уровнем изоляции транзакций Serializable.

Сохранение позиции скроллбара при постбэках

Чтобы сохранить позицию скроллбара при выполнении postback, в ASP.NET 2.0 просто добавьте MaintainScrollPostionOnPostBack атрибут Page директиве:

<% Page Language="C#" ... MaintainScrollPositionOnPostback="true" %>

Если вы хотите, чтобы это работало для всех страниц сайта, то добавьте этот атрибут в блок <pages />  файла your web.config:

<pages maintainScrollPositionOnPostBack="true" />

 

Используйте "App_Offline.htm" во время апдейта сайта

Если вы вносите много изменений в работающий сайт и не хотите, чтобы пользователи имели доступ к сайту до завершения изменений, создайте файл app_offline.htm в корне сайта. После этого, пользователям на все запросы будет возвращаться содержимое этого файла. После окончания апдейта, просто удалите или переименуйте app_offline.htm.

 


Вопросы? Пожелания? Пишите: comp.soft.prog.gurudotnet-owner@subscribe.ru

В избранное