Я использую NHibernate для загрузки некоторых объектов в мое приложение ASP.NET MVC.
Например, представление отправлено пользователем, и я хочу отобразить имя пользователя (но только имя пользователя) пользователя, например:
<%= Html.Encode(item.User.UserName) %>
Когда я загружаю представление, используя NHibernate, пользователь загружается из базы данных с отложенной загрузкой, что означает, что фактический запрос SQL (для загрузки информации о пользователе) будет генерироваться и выполняться только тогда, когда я вызываю вышеуказанную строку кода (которая это то, что я хочу).
Проблема в том, что запрос SQL также выбирает другую информацию о пользователе, такую как пароль, адрес электронной почты и т. Д. Эта информация явно не нужна и отбрасывается.
SQL-запрос выглядит так:
SELECT id, username, password, email FROM User WHERE Id = 1;
Я пришел к выводу, что NHibernate только ссылки с отложенной загрузкой на другие объекты, которые отображаются на таблицы в моей базе данных. Похоже, он не загружает ленивые базовые, примитивные типы, такие как строки, целые и т. Д.
Могу ли я это сделать? Когда в приведенной выше строке выбран код, я бы хотел, чтобы SQL-запрос выглядел примерно так:
SELECT username FROM User WHERE Id = 1;
Возможно ли это? Как?