NHibernate: Настройка ссылок с IResultTransformer - PullRequest
1 голос
/ 02 марта 2010

У меня есть собственный класс, который реализует IResultTransformer.

Это легко сделать для отдельных значений, но как правильно настроить ссылки, если в кортеже присутствует только идентификатор? Что делать, если они должны быть загружены ленивыми? Должен ли я просто загрузить их из сеанса, используя методы Get или Load?

Например:

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 Ответ

1 голос
/ 02 марта 2010

Вы должны загрузить указанную сущность по ее первичному ключу, используя Get или Load. Если они загружены лениво, используйте Load.

Get вернет ноль, если объект не существует. Обычно это приводит к выбору базы данных, но сначала он проверяет кэш сеанса и кэш 2-го уровня.

Load никогда не вернет ноль. Он вернет прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...