我在DAL方法返回的客户名单:延迟加载
Collection<Customer> FindAllCustomers();
客户有这些列:ID,姓名,地址,生物
我需要证明他们在我的ASPX格式(show-customers.aspx)的分页网格中,我将只显示这些列:ID,名称
现在,在我的DAL FindAllCustomers()中,是否也将Bio域SP(我正在使用阅读器填充集合)? Bio字段可以很大(nvarchar(max))。我正在考虑懒加载或只加载必填字段。但在那种情况下,我需要创建另一种方法,返回包括bio的“完整”客户列表,以便第三方应用程序可以通过服务层使用它。因此,它是确定以创建一个方法是这样的:
Collection<Customer> FindAllCustomers(bool loadPartial);
如果loadPartial = true,则不会加载生物,否则加载它。在这种情况下,因为我不想从SP返回Bio,所以我需要根据bool值在我的SP中创建2条select语句。
我认为在这里使用延迟加载将无法正常工作,因为DAL方法可以被第三方应用程序访问,该应用程序也可能需要加载该生物。
关于在这种情况下实现的最佳模式的任何建议?
感谢,
维卡斯
1.在DAL中传递的bool参数决定我们是否需要加载其他“非必要大”字段。未来可能有其他领域可能不需要。 2.如果loadPartial = true,bio将根本无法访问。我了解另一种方式:只要访问该资源,就会延迟加载Bio。 – user154624 2009-08-11 20:52:20
但是再次强调,IMO对于这种延迟加载有两种方法: 1.在DAL中,让读者阅读Bio列,但不要将其加载到Customer属性中。在这种情况下,由于阅读器读取整行(而不是按列方式),因此我们会通过让SP返回整个Bio列来记录每个记录,从而浪费宝贵的DB带宽。 2.一旦Bio属性被访问,通过参数化的SP加载生物列。在这种情况下,我会进行2个DAL呼叫。不知道这有多好? – user154624 2009-08-11 20:53:12