我认为这很简单,但事实证明它比我预期的更令人沮丧。
给出类似于此的结构......
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 - 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
仍然是空的。有任何想法吗?
答案 0 :(得分:1)
我认为这里关系的双方需要一对一。此外,您还需要在关系的一侧指定id是外部生成的。
如果您需要更多细节,请阅读以下2篇文章:
link1
link2
修改强>
这里有一个关于我正在谈论的内容以及他们在link1中谈到的内容的例子:
Fluent Example