【发布时间】:2009-10-02 15:59:01
【问题描述】:
作为学习 NHibernate 的一种方式,我想出了一个包含典型用户和组身份验证系统的小项目。这让我开始思考如何做到这一点。我很快将以下类放在一起并将它们映射到数据库,经过大量试验和错误后,它工作了。我最终得到了一个三表数据库模式,其中用户表和组表之间存在多对多关联表。
public class User
{
public virtual string Username { get; set; }
public virtual byte[] PasswordHash { get; set; }
public virtual IList<Group> Groups { get; set; }
}
public class Group
{
public virtual string Name { get; set; }
public virtual IList<User> Users { get; set; }
}
我的问题是关于这种类设计的可扩展性和潜在性能。如果这是在一个拥有数万用户的生产系统中,即使对 Group 的 Users 集合进行延迟加载,任何对 Groups 属性的调用都可能引发巨大的数据检索。
NHibernate 将如何应对这种情况以及我如何改进我的设计?
【问题讨论】:
标签: c# nhibernate oop