3 сентября 2009 г.

Отмена обработки события load дизайнером форм Visual Studio 2005

Иногда при конструировании сложных форм в Visual Studio, особенно при наследовании Дизайнер студии не справляется с загрузкой сторонних компонентов из солюшена (например, не может динамически прилинковать class assembly другого проекта солюшена).
Дизайнер обрабатывает конструктор и событие Load формы\контрола.
Решается это довольно просто, вот таким способом мы определяем, что загрузка функции идет от дизайнера и прекращаем обработку события (или конструктора).


private void MyUserControl_Load(object sender, EventArgs e)
{
if (this.DesignMode) return;

... а здесь наш код ...
}

1 сентября 2009 г.

Nhibernate в .NET

Надоел мне, так называемый raw SQL на работе, и воодушевившийся django я подумал, а нет ли ORM для C# .NET 2.0 (тем более, что в NET 3.5 и студии 2008 уже заложена пооддержка ORM в виде LINQ (хотя, как я понял - это не совсем ORM, а скорее аналог HQL). Оказалось есть и не одна.

Так как я приверженец os, поэтому неудивительно, что мой выбор пал на NHibernate.

NHibernate — ORM-решение для платформы Microsoft .NET портированное с Java. Это бесплатная библиотека с открытым кодом, распространяется под лицензией GNU Lesser General Public License.

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

NHibernate является портом на .NET популярной на платформе Java библиотеки Hibernate. Версия 1.0 покрывает набор возможностей Hibernate 2.1, а также часть возможностей Hibernate 3. NHibernate 1.2.1, выпущенная в ноябре 2007 года, предоставляет ещё больше возможностей из Hibernate 3, поддерживает .NET 2.0, хранимые процедуры, generics и nullable типы. NHibernate 2.0.1, выпущенная в конце сентября 2008 года предоставляет бо́льшую часть возможностей Hibernate 3.
Поддерживаемые СУБД

* Microsoft SQL Server
* Oracle
* Microsoft Access
* Firebird
* PostgreSQL
* DB2 UDB
* MySQL
* SQLite


http://ru.wikipedia.org/wiki/NHibernate

Чтобы быстро начать с ним работать, рекомендую просмотреть следущие скринкасты:
Summer of nhibernate

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

ps. приверженцы Djanjo оценят, я уверен =)
pps. Да, с Днем Знаний всех! Помните, учиться никогда не поздно! ;)

укапывп