NHibernate:使用IResultTransformer设置引用

时间:2010-03-01 23:22:49

标签: nhibernate

我有一个实现IResultTransformer的自定义类。

很容易使单个值工作,但如果只有id在元组中,那么设置引用的正确方法是什么?如果它们应该是懒惰加载怎么办?我应该使用Get或Load方法从Session加载它们吗?

例如:

public class FoobarResultTransformer : IResultTransformer
{
    public object TransformTuple(object[] tuple, string[] aliases)
    {
        var foobar = new Foobar();

        for (int i = 0; i < aliases.Length; i++)
        {
            switch(aliases[i])
            {
                case "IntProperty":
                    // This one is easy
                    foobar.IntProperty = Convert.ToInt32(tuple[i]);
                    break;
                case "ReferencedEntityId":
                    // Assuming the tuple contains a GUID identifier, what should I do here?
                    foobar.ReferencedEntity =
                    break;
            }
        }

        return foobar;
    }
}

1 个答案:

答案 0 :(得分:1)

您应该使用GetLoad按主键加载推介实体。如果它们应该延迟加载,请使用Load

如果对象不存在,Get将返回null。这通常导致对数据库的选择,但它将首先检查会话缓存和第二级缓存。

Load永远不会返回null。它将返回一个代理。