Страницы

среда, 2 октября 2013 г.

Ведение проекта базы данных разработчиков и проекта производственной базы данных в Visual Studio 2012

Проект типа Database Project в Visual Studio вещь очень удобная, но есть один неприятный момент, а именно производственная база данных может отличаться по структуре и прочим атрибутам от базы данных разработчиков. Причем эти отличия, заключаются, не в том, что не все  разработки еще перенесены, а носят принципиальный характер, например пользователи, какие-то таблицы, нужные только для производственной среды и не имеющие отношения к разрабатываемому проекту.
Можно конечно хранить все в одном проекте, и перед очередной публикацией добавлять/убирать комментарии или включать/выключать скрипты из build. Но чуть подумав, я вроде нашел способ лучше и изящнее.
Еще в Visual Studio 2010 существовало такое понятие, как Composite Database Project, попробуем применить данный подход для решения стоящей перед нами задачей, а именно просто унаследуем производственную базу данных от базы данных разработчиков.

Быстрое восстановление SQL сервера после падения БД model

После очередного отключения электричества в офисе (UPS наше все, но он сломался еще два года назад) один из SQL серверов (MS SQL 2008 R2) отказался подниматься, при этом в системном журнале ошибок (Application Events) появлялось следующее сообщение:
Error: 9003, Severity: 20, State: 1.
The log scan number (23:456:1) passed to log scan in database 'model' is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.


пятница, 13 сентября 2013 г.

четверг, 13 июня 2013 г.

Установка AppFabric Caching Service High Availability cluster

Возникла задача использования High Availability (HA) службы SharedMemory с небольшим временем доступа, после небольшого анализа было принято решение остановиться на Microsoft AppFabric Caching Service. После некоторого количества экспериментов был выработан подход по установке в необходимой конфигурации, который описан ниже.

воскресенье, 9 июня 2013 г.

Enum extension методы для Flag enum

Тип данные enum меняет свое поведение при добавление атрибута [Flags], и позволяет использовать enum в виде битовой маски. Но к сожалению, в стандарте присутствует всего один метод работы c такими enum, а именно HasFlag - производящий проверку установлены или нет соответствующие биты.

суббота, 8 июня 2013 г.

Создание Windows Service Application с ипользование Topshelf

Всем хорошо известно, как создавать Windows Service Application, если нет, то смотрим MSDN. Но отлаживать его функциональность жутко неудобно, да иногда сервис и не нужен, а хочется запустить приложение в консольном виде. Для реализации такой задачи существует замечательный продукт Topshelf.

воскресенье, 2 июня 2013 г.

Использование enum в XAML

К сожалению, WPF, в штатной поставке, имеет ограниченные возможности для работы с enum значениями, т.е. он может просто отобразить имя enum значения. Для решения данной проблемы воспользуемся знаниями о ValueConverter и набором extension методов для enum.

суббота, 1 июня 2013 г.

Enum extension методы для работы с DescriptionAttribute

В интернет много примеров использования System.ComponentModel.DescriptionAttribute для описания значения enum, данное решение применимо, когда у вас есть доступ к исходным кодам описания enum. Но, если enum содержится во внешней библиотеке, то сделать ничего нельзя (ну как минимум, я не знаю, как установить значение атрибута для внешней библиотеки). Поэтому был реализован набор extension методов обеспечивающих и расширяющих данную функциональность.

вторник, 21 мая 2013 г.

WPF Bingings и CultureInfo

Binding в WPF очень хорошо, но разработчики Microsoft как всегда забыли о существовании стран, за пределами USA, и формат используемый по умолчанию не всегда подходит.
Попробуем исправить данную ситуацию несколькими способами.
Вот тот результат, к которому мы стремимся:

понедельник, 13 мая 2013 г.

Подсчет итого с накоплением (Running total) в T-SQL

Иногда в запросе из базы данных необходимо получить суммы значений с накоплением по строкам. Ниже рассмотрим несколько вариантов выполнения данной задачи, в среде MS SQL.

суббота, 11 мая 2013 г.

IntelliSense для Binding выражений в редакторе XAML

При работе в WPF во XAML приходится писать много выражений связывания контролов с property ViewModel. Все хорошо, но приходится помнить имена property и очень высока вероятность ошибки.

Использование ValueConverter в XAML, без объявления ресурсов

ValueConverter известный всем метод обеспечения специальной логики преобразования величин в Binding выражениях.
Но каждый раз при подключении конвертеров к XAML приходится прописывать ресурсы, ссылающиеся на конвертор, что утомительно. Но есть решение, позволяющее подключать конвертер с меньшими затратами.

понедельник, 6 мая 2013 г.

EntityFramework DbSet.Include

Век живи, век учись - дураком помрешь.
В EF есть замечательный метод DbSet.Include позволяющий производить явную загрузку связанных сущностей из БД. Данная функциональность весьма полезна, иначе происходит отложенная загрузка, при обращении к связанной сущности.
Но почему-то все время у меня всплывало использование данного метода с параметром типа string, где прописывалось имя подгружаемой сущности.

Получение информации о соединении в MS SQL Server

Периодически возникает необходимость получать информацию о транспортном соединении (ip адрес) в T-SQL, вариантов как всегда много. В интернете часто находишь совет выполнить следующий запрос:
Но, к сожалению, данный метод применим не во всех случаях, а именно у подключения не хватает прав для доступа. Лучше всего для выполнения данной задачи подходит штатная функциональность MS SQL 2008

четверг, 2 мая 2013 г.

Binding ContentControl.DataTemplate к ViewModel

Иногда необходимо использовать ContentControl с подключенным стилем, который содержит DataTemplate. При этом хочется, что бы ContentControl не был связан с какой либо конкретной property ViewModel, а элементы в DataTemplate стиля, имели доступ ко всем property ViewModel (которая устанавливается в DataContext на уровне всего UserControl)

пятница, 12 апреля 2013 г.

NUnit начало

После очередного обновления Visual Studio 2012 отвалилась связка ReSharper и MsTest. Поэтому быстро перешел на использование NUnit, в качестве движка для реализации UnitTest.
Далее краткие заметки, по использованию NUnit.

воскресенье, 7 апреля 2013 г.

Публикация красиво оформленного кода

Т.к., существует необходимость публикации исходных кодов и файлов конфигураций, то сразу озадачимся вопросом подсветки и оформления. После анализа возможных вариантов выбор пал на SyntaxHighlighter