Я новичок в NHibernate и сталкиваюсь со странным поведением (используя NHibernate 2.1.2.4000 FluentNHibernate версия 1.1.0.685).Каким-то образом идентификатор, который является Guid, сбрасывается на пустой после первого доступа к объекту Item.Есть ли побочный эффект при доступе к связанному объекту, как в строке 2?
1. System.Diagnostics.Debug.WriteLine(widgetQueue.Item.Id);
2. var ItemStageId = widgetQueue.Item.CurrentStage.Id.ToString();
3. System.Diagnostics.Debug.WriteLine(widgetQueue.Item.Id);
Output Window:
113a6af2-3fe2-49c2-9276-9ec30081a811
00000000-0000-0000-0000-000000000000
Обновление:
Я изменил поле Id с new virtual :
public class Item : EntityWithTypedId<Guid>
{
private Guid id;
[DomainSignature]
public new virtual Guid Id
{
get { return id; }
protected set { id = value; }
}
....
public Item() {
Id = Guid.Empty;
....
}
public Item(Guid id)
: base()
{
Id = id;
}
}
к переопределить :
public class Item : EntityWithTypedId<Guid>
{
private Guid id;
[DomainSignature]
public override Guid Id
{
get { return id; }
protected set { id = value; }
}
....
}
Я ожидал ошибку времени выполнения, так как считал, что свойства должны быть виртуальными для работы отложенной загрузки.Любая подсказка, что происходит?
Обновление 2: я заметил, что мы объявили переменную экземпляра для поддержки свойства Id.Итак, я удалил его и получил доступ к идентификатору базового класса.Это работает и имеет больше смысла, но до сих пор не нашел причины, по которой предыдущие попытки не увенчались успехом.
public class Item: EntityWithTypedId {// private Guid id;
[DomainSignature]
public new virtual Guid Id
{
get { return base.Id; }
protected set { base.Id = value; }
}