Хорошо, поэтому вчера мне удалось получить последние сборки стволов NHibernate и FluentNHibernate для работы с моим последним небольшим проектом. (Я работаю над приложением отслеживания ошибок.) Я создал хороший слой доступа к данным, используя шаблон Repository.
Я решил, что мои сущности не являются чем-то особенным, а также, что с текущей зрелостью ORM я не хочу вручную создавать базу данных.
Поэтому я решил использовать функцию автоматического сопоставления FluentNHibernate со свойством NHibernate "hbm2ddl.auto", установленным на "create".
Это действительно работает как шарм. Я поместил конфигурацию NHibernate в файл конфигурации домена моего приложения, настроил его и начал играть с ним. (В настоящее время я создал только несколько модульных тестов.) Он создал все таблицы в базе данных и все, что мне для этого нужно. Это даже правильно сопоставило мои отношения «многие ко многим».
Однако есть несколько небольших глюков:
- Все столбцы, созданные в БД, допускают нулевое значение. Я понимаю, что он не может предсказать, какие свойства должны разрешать null, а какие нет, но, по крайней мере, я хотел бы сказать, что он должен разрешать null только для тех типов, для которых null имеет смысл в .NET (например, non типы значений со значением NULL не должны иметь значение null).
- Все созданные им столбцы nvarchar и varbinary имеют длину по умолчанию 255. Я бы предпочел, чтобы они были на максимуме вместо этого.
Есть ли способ рассказать авто картографу о двух простых правилах выше?
Если ответ «нет», будет ли он работать правильно, если я изменю созданные им таблицы?
(Итак, если я установлю некоторые столбцы, чтобы они не допускали пустое значение, и изменил разрешенную длину для другого, будет ли он корректно работать с ними?)
ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:
Большое спасибо всем, кто зашел и помог.
Все мои проблемы с Fluent решены.