gpt4 book ai didi

c# - NHibernate - 延迟加载原始类型

转载 作者:行者123 更新时间:2023-11-30 18:09:56 26 4
gpt4 key购买 nike

我正在使用 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;

这可能吗?怎么办?

最佳答案

您是否有不想加载完整对象的原因?除了极少数情况外,没有真正的性能差异。

我可以理解不想将密码加载到内存中,尽管它应该被加密并且可能无论如何都不应该在您的域模型中。在你的情况下,我会做的是将 User 子类化为两个类,User 和 UserProfile(包含密码等),这样你就可以在管理用户帐户时只使用 UserProfile 对象。

关于c# - NHibernate - 延迟加载原始类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com