Вероятно, проще всего было бы добавить новое свойство в Thing2 для отношений, таким образом сделав его двунаправленным отношение один к одному
, например
public class Thing2 : BaseEntity
{
public virtual Thing2 Thing2 { get; set; }
...basic fields
}
Затем вам нужно убедиться, что Thing 1 и Thing 2 не синхронизированы. Вы можете сделать это что-то вроде:
public class Thing1 : BaseEntity
{
private Thing2 thing2;
public virtual Thing2 Thing2 { get { return thing2; } }
public void SetThing2(Thing2 thing2)
{
this.thing2 = thing2;
thing2.SetThing1(this);
}
}
public class Thing2 : BaseEntity
{
private Thing1 thing1;
public virtual Thing1 Thing1 { get { return thing1; } }
public void SetThing1(Thing1 thing1)
{
this.thing1 = thing1;
thing1.SetThing2(this);
}
}
(Извините за опечатку, но вы поняли)
Таким образом, вы можете перейти Thing1.SetThing2(myThing2)
(и наоборот), и оба свойства будут установлены.
Без такой установки (то есть, делая свойства доступными только для чтения и создавая удобный метод для одновременной установки обоих свойств), вы рискуете, что объекты не синхронизируются друг с другом - поэтому Thing1 может ссылаться на Thing2 без этого Thing2 ссылается на Thing1.