Свободное владение nHibernate, обратное свойство One-One - PullRequest
1 голос
/ 19 апреля 2011

Я думал, что это будет довольно просто, но это оказывается немного более разочаровывающим, чем я ожидал.

Учитывая структуру, подобную этой ...

class Template {
  public virtual int Id { get; set; }
  public virtual Attached Attached { get; set; }
}

class Attached {
 public virtual int Id { get; set; }
 public virtual Template Template { get; set; }
}

Я хочуСтруктура таблицы выглядит следующим образом.

Таблица - Шаблон

Id

Таблица - Прикрепленный

Id - TemplateId

Итак, я установилвверх по моему отображению ...

class TemplateMap : ClassMap<Template> {
  TemplateMap(){
    HasOne(x => x.Attached).Cascade.All();
  Table("Templates");
  }
}
class AttachedMap : ClassMap<Attached> {
  AttachedMap(){
    References(x => x.Template).Cascade.All().Column("TemplateId");
    Table("Attached");
  }
}

затем я создаю новый шаблон

var tmpl = new Template {
  Attached = new Attached {
    // ... 
  }
};

session.SaveOrUpdate(tmpl);
transaction.Commit();

Но мой TemplateId в таблице Attached по-прежнему выходит нулевым.Есть идеи?

1 Ответ

1 голос
/ 19 апреля 2011

Я думаю, что обе стороны отношений должны быть один на один.Также вам нужно будет указать на одной стороне отношения, что идентификатор генерируется за рубежом.

Прочитайте следующие 2 статьи, если вам нужно больше подробностей:
link1
link2

Редактировать:
Вот пример того, о чем я говорю, и то, о чем они говорили в «Свободном разговоре», в «Свободном»:
Свободный пример

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...