Как уже отмечали другие, реализация Equals и GetHashCode - это шаг в правильном направлении. Также обратите внимание на поддержку NHibernate для идиомы «присоединить» OR / M.
В вашем распоряжении также опция nosetter.camelcase: http://davybrion.com/blog/2009/03/entities-required-properties-and-properties-that-shouldnt-be-modified/
Кроме того, я хотел бы призвать вас не отговаривать от отсутствия информации в Интернете. Это не значит, что ты сумасшедший или делаешь что-то не так. Это просто означает, что вы работаете в крайнем случае. К сожалению, крупнейшими потребителями таких библиотек, как NHibernate, являются небольшие собственные и / или веб-приложения, в которых есть свобода использовать все ваши постоянные потребности в одной базе данных. В действительности есть много исключений из этого правила.
Например, в настоящее время я работаю над коммерческим настольным приложением, в котором один из моих доменных объектов имеет свои данные, распределенные между базой данных SQL CE и файлами изображений на диске. К сожалению, NHibernate может помочь мне только с сохранением SQL CE. Я вынужден использовать своего рода «двойное сопоставление» (см. «Шаблоны архитектуры корпоративных приложений» Мартина Фаулера * ), чтобы сопоставить мою модель домена через уровень хранилища, который знает, какие данные отправляются в NHibernate, а что на диск .
Это случается. Это реальная необходимость. Иногда очевидный недостаток инструмента указывает на то, что вы используете плохой подход. Но иногда правда в том, что вы действительно находитесь в предельном случае, и вам нужно создать некоторые из этих шаблонов для себя, чтобы это сделать.