NHibernate,将子对象添加到集合和引用

时间:2012-01-26 09:26:27

标签: nhibernate

文档对象具有版本对象的集合,另外还有对当前版本的引用。

我的映射:

public DocumentMap()
{
  Table("DocDocument");
  LazyLoad();
  Id(x => x.Id).GeneratedBy.HiLo("hi_lo", "NextHiLo", "10", "TableName = 'DocDocument'");
  References(x => x.CurrentVersion, "CurrentVersionId");
  HasMany(x => x.Versions)
    .KeyColumn("DocumentId")
    .Access.CamelCaseField(Prefix.Underscore)
    .Inverse()
    .AsSet()
    .Cascade.AllDeleteOrphan();
}


public DocumentVersionMap()
{
   Table("DocDocumentVersion");
   LazyLoad();
   Id(x => x.Id).GeneratedBy.HiLo("hi_lo", "NextHiLo", "10", "TableName = 'DocDocumentVersion'");

   References(x => x.Document, "DocumentId").Not.Nullable();
}

问题是当我创建新文档,新版本然后将文档对象分配给版本对象,并将版本对象添加到文档对象中的版本集合时,它工作正常。但NH发出三个sql: 1。插入文档,2。插入版本,然后3.更新文档并设置当前版本ID 。如果两个对象都有hilo生成器,那么更新是否必要,所以NH在生成sql之前知道它是id?

0 个答案:

没有答案