我正在使用 NHibernate 将行批量插入到我的数据库中。由于我要插入的数据量很大,我使用IStatelessSession
的是ISession
. 我插入的对象使用分配的身份(即没有生成 hilo 或 guid——唯一的 id 被分配给对象)。
我的问题是我有一个对象(比如说Foo
),它对另一个对象(比如说)有一个多对一的引用Bar
。我先插入所有Bar
对象,这没问题。
当我想插入Foo
对象时,问题就来了。我知道每个对象的唯一标识符Bar
,但我不想为了在插入对象之前Bar
设置对象的属性而从数据库中检索每个对象。Foo
现在可能是展示一个简单示例的好时机:
public class Foo {
// Unique identifier (assigned)
public virtual int Id { get; set; }
// Many-to-one reference to a Bar object
public virtual Bar Bar { get; set; }
}
public class Bar {
// Unique identifier (assigned)
public virtual int Id { get; set; }
}
假设我想创建一个(比如说)1234 的新Foo
对象,Id
它引用一个Bar
ID 为(比如说)4567 的对象。我知道已经有一个Bar
具有此标识符的对象,因为我之前添加了所有Bar
对象.
如何在不必再次从数据库Foo
中检索对象的情况下添加对象Bar
?