C# NHibernate-延迟加载原语类型
我正在使用NHibernate将一些对象加载到我的ASP.NET MVC应用程序中 例如,提交是由用户提交的,我想显示用户的用户名(但仅显示用户名),如下所示:C# NHibernate-延迟加载原语类型,c#,sql,asp.net-mvc,nhibernate,lazy-loading,C#,Sql,Asp.net Mvc,Nhibernate,Lazy Loading,我正在使用NHibernate将一些对象加载到我的ASP.NET MVC应用程序中 例如,提交是由用户提交的,我想显示用户的用户名(但仅显示用户名),如下所示: <%= Html.Encode(item.User.UserName) %> SELECT username FROM User WHERE Id = 1; 我的结论是,NHibernate只延迟加载对映射到数据库中表的其他对象的引用。它似乎不会延迟加载基本的基本类型,如字符串、int等 我可以这样做吗?当选择上面的代码
<%= Html.Encode(item.User.UserName) %>
SELECT username FROM User WHERE Id = 1;
我的结论是,NHibernate只延迟加载对映射到数据库中表的其他对象的引用。它似乎不会延迟加载基本的基本类型,如字符串、int等
我可以这样做吗?当选择上面的代码行时,我希望SQL查询如下所示:
<%= Html.Encode(item.User.UserName) %>
SELECT username FROM User WHERE Id = 1;
这可能吗?如何操作?您需要使用resultTransformer将查询结果映射到要存储它的对象(据我所知,这是您的普通用户DTO类,但减去所有其他字段)
查看第16.1.5节(它的Hibernate,不是NHibernate,但应该仍然适用)是否有不想加载完整对象的原因?除了极少数情况外,没有真正的性能差异 我可以理解不想将密码加载到内存中,尽管它应该被加密,而且可能无论如何都不应该在您的域模型中。在您的情况下,我要做的是将User分为两个类,User和UserProfile(包含密码等),以便您在管理用户帐户时只使用UserProfile对象