У нас есть новое требование, согласно которому каждый объект должен иметь назначаемый пользователем идентификатор:
public class Entity
{
public int ServerId { get; set; }
public int UserId { get; set; }
}
. ServerId
- это автоматически генерируемый идентификатор с использованием HiLo, а UserId
определяется пользователем.Я БЫ.Однако, если пользователь НЕ устанавливает UserId
, он должен по умолчанию принимать значение ServerId
.Поэтому я создал слушателя следующим образом:
public class CustomEventListener : IPreInsertEventListener
{
public bool OnPreInsert(PreInsertEvent @event)
{
var entity = @event.Entity as Entity;
if (entity.UserId == 0)
{
entity.UserId = entity.ServerId;
}
return false;
}
}
К сожалению, на этом этапе предварительной вставки ServerId
всегда равен 0, поэтому UserId
всегда равен 0. Кто-нибудь знает, как я могу получитьсгенерированный ServerId
до сохраняется в базе данных, но после ServerId
заполняется NHibernate?
PS Я также предполагаю, что это невозможнос генератором Identity
, поскольку он сохраняет данные в базе данных, а затем получает идентификатор, используемый БД.Кто-нибудь может это подтвердить?