假设我有这些类,它们之间存在多对多关系:
public class ClassA
{
public virtual int IdClassA { set; get; }
public virtual IList<ClassB> BElements { set; get; }
...
}
public class ClassB
{
public virtual int IdClassB { set; get; }
public virtual IList<ClassA> AElements { set; get; }
...
}
是否可以使用NHibernate插入ClassB对象并将其与ClassA对象关联,而无需从数据库中引入ClassA对象? (可能只是指定一个查询来判断哪些ClassA对象与新的ClassB对象相关?)
答案 0 :(得分:1)
不确定
var a1 = session.Load<ClassA>(idA1);
var a2 = session.Load<ClassA>(idA2);
var b = new ClassB { AElements = new List<ClassA> { a1, a2 } };
session.Save(b);
transaction.Commit();
idA1
和idA2
是相关ClassA
个实例的ID。 session.Load
创建代理而不从db加载对象(或返回已加载的实例,如果有的话)
答案 1 :(得分:0)
我看到两个选项。有两个映射用于两个类,一个用于插入的其他类对象,另一个用于只选择没有对象。或者使用急切加载(lazy true / false),它将从其他类中检索id但不是整个班级......在我看来,它几乎没有任何东西可以加载(只是ids)。这有帮助吗?