0

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

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

4

2 回答 2

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创建一个代理而不从数据库加载对象(或者返回一个已经加载的实例,如果有的话)

于 2013-05-29T11:46:19.420 回答
0

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

于 2013-05-29T00:28:30.890 回答