我正在使用 Fluent NHibernate 来读取和写入文件。目前,我有一个父子关系,映射定义为
public class ParentMappings: ClassMap<Parent>
{
public ParentMappings()
{
Table("Parent");
Id(x => x.Id).Column("Parent_Id");
...
HasMany(x => x.Children)
.Not.KeyNullable()
.Not.Inverse()
.KeyColumn("Parent_Id")
.Cascade.All();
...
}
}
和
public class ChildMappings : ClassMap<Child>
{
public ChildMappings()
{
Table("Child");
Id(x => x.Id).Column("Child_Id");
Map(x => x.ParentId).Column("Parent_Id");
...
}
}
这是问题所在。我希望能够使用无状态会话写入父/子表,以保持速度,还希望能够从有状态会话的表中读取,以便正确加载 Children 集合。但是,这两种方法似乎不兼容。HasMany()
中断无状态写入的调用;删除它会破坏有状态的读取。
在更广泛的背景下,可能还存在我想要使用有状态会话写入数据库的情况。但在这种情况下,包含该Map(x => x.ParentId).Column("Parent_Id")
语句会破坏有状态写入。
看起来我需要为有状态和无状态会话使用不同的映射。但是,我是 NHibernate 的新手,在这个阶段我看不到明显的方法来做到这一点。任何人都可以提出一种方法来做到这一点,或等效的解决方法吗?