关联多对多对象而不从数据库加载它们

时间:2013-05-28 21:39:22

标签: c# nhibernate insert many-to-many

假设我有这些类,它们之间存在多对多关系:

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对象相关?)

2 个答案:

答案 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();

idA1idA2是相关ClassA个实例的ID。 session.Load创建代理而不从db加载对象(或返回已加载的实例,如果有的话)

答案 1 :(得分:0)

我看到两个选项。有两个映射用于两个类,一个用于插入的其他类对象,另一个用于只选择没有对象。或者使用急切加载(lazy true / false),它将从其他类中检索id但不是整个班级......在我看来,它几乎没有任何东西可以加载(只是ids)。这有帮助吗?