Если вы хотите, чтобы в вашей сущности было без идентификатора , вам все равно нужно сопоставить Id, чтобы NHibernate знал, какой столбец базы данных использовать.
Вы можетезвоните
Id<TColumnDataType>("column_name");
Обратите внимание, что вы откажетесь от некоторых функций NHibernate (в частности, от каскадных обновлений и возможности вызывать SaveOrUpdate()
) и понизите производительность на стороне базы данных за наличие идентификатора только для базы данных (Iполагаю, NHibernate придется делать дополнительные запросы для сравнения).
Я обычно допускаю этот момент и допускаю Id
как одну проблему постоянства в моих классах домена, поэтому я бы сделал это:
public class HeyMapping
{
protected internal int Id { get; set; } // persistence concern
public virtual String Name { get; set; }
public virtual DateTime Timestamp { get; set; }
}
Я понимаю, что вы, возможно, не захотите этого делать;Я просто сообщаю вам, что есть компромисс.