当使用NHibernate插入或保存时,应该给对象代理什么值?
本文关键字:对象 代理 什么 NHibernate 插入 保存 | 更新日期: 2023-09-27 17:49:25
假设我们有类tablecchild和类TableParent。它们对应于数据库中的类似表。TableChild和TableParent的名称表明它们之间存在关系。TableChild类有一个TableParent类型的属性来复制我们类中的关系。现在当我为TableChild插入一个新对象时,我们如何为TableParent的属性提供值。我们应该把TableParent的ID赋值给TestChild吗?或者我们使用TableParent的ID值从DB中获取整个对象,然后将这个对象分配给TableChild。第二种方法是可行的,但会带来更多的性能开销,因为我们必须发出额外的Select语句。
我们正在使用的映射是简单的如果可能的话,请建议一些简单的方法来将关系存储到子表中,同时为相同的子表插入新值。
在c#中,关系是对象引用。
public class TableParent
{
}
public class TableChild
{
TableParent Parent { get; set; }
}
要创建一个有已知父对象的子对象,给它一个NHibernate知道的父对象。使用ISession.Load()
提供了一个代理对象,而不涉及数据库(假设没有禁用延迟加载)。
// create and save a child with a known parent
var c = new TableChild {
Parent = session.Load<TableParent>( parent_id );
};
session.Save( c );