我有一个实现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;
}
}
答案 0 :(得分:1)
您应该使用Get
或Load
按主键加载推介实体。如果它们应该延迟加载,请使用Load
。
如果对象不存在,Get将返回null。这通常导致对数据库的选择,但它将首先检查会话缓存和第二级缓存。
Load永远不会返回null。它将返回一个代理。