У меня есть два класса домена следующим образом:
[ActiveRecord]
public class ClassOne : ActiveRecordBase<ClassOne>
{
[PrimaryKey(PrimaryKeyType.GuidComb)]
public Guid Id { get; set; }
[OneToOne(Cascade = CascadeEnum.All)]
public ClassTwo ClassTwo { get; set; }
}
[ActiveRecord]
public class ClassTwo : ActiveRecordBase<ClassTwo>
{
[PrimaryKey(PrimaryKeyType.Foreign)]
public Guid Id { get; set; }
[OneToOne(Constrained = true)]
public ClassOne ClassOne { get; set; }
}
Когда у меня есть следующее:
var one = new ClassOne();
var two = new ClassTwo();
one.ClassTwo = two;
one.Save();
Я получаю сообщение об ошибке «Не удалось выполнить сохранение для ClassOne» с «попытка присвоить идентификатор из нулевого свойства« один к одному »: ClassOne».
»
Я бы ожидал Castle ActiveRecord или, возможно, NHibernate, из-за того, что отношение определяется как один к одному, чтобы автоматически назначать two.ClassOne, когда назначается one.ClassTwo. Для этого я реализовал следующее:
private ClassTwo _classTwo;
[OneToOne(Cascade = CascadeEnum.All)]
public ClassTwo ClassTwo
{
get { return _classTwo; }
set
{
_classTwo = value;
if (_classTwo.ClassOne == null)
_classTwo.ClassOne = this;
}
}
Это упущение в структуре или я, возможно, упускаю какой-то вариант использования, который бы противопоказал это поведение?