У меня есть объект, объявленный как этот
public class MyObject
{
public virtual long MyId { get; set; }
public virtual MyChild Child { get; set; }
public MyObject()
{
Child = new MyChild();
}
}
public class MyChild
{
public virtual long MyId { get; set; }
}
Я устанавливаю дочерний элемент с "пустым объектом", потому что я хочу пустой объект вместо нуля в моей модели.
В моей базе данных у меня есть таблица, подобная этой
CREATE TABLE MyObjects
(
MyObjectId bigint IDENTITY(1,1) NOT NULL,
ChildId bigint NULL
)
И затем в моем отображении
References<MyChild>(x => x.Child, "ChildId");
Вот где начинаются проблемы. Когда я пытаюсь создать новый MyObject
Я получу ошибку объект ссылается на несохраненный временный экземпляр .Итак, я сделал это:
var newObject = new MyObject()
{
Child = null
};
repository.Save(newObject);
Это работает для сохранения, но теперь у моего объекта нулевой дочерний элемент, а это не то поведение, которое мне нужно.Хак, который я мог бы использовать, это сбросить дочерний элемент на пустой после создания нового MyObject
, но я хочу посмотреть, есть ли лучший способ.
Дочерний элемент должен быть не нулевым в моем объекте, а сохраненкак ноль, если идентификатор дочернего объекта равен 0.
EDIT
Просто тестировал всю стратегию null / reset, и она не работает.последующие запросы nhibernate к любым объектам в моей модели вызывают ошибку временного объекта.