【发布时间】:2014-03-26 08:21:13
【问题描述】:
我有一个数据访问层类,它有一个方法 (GetPeople),可以从 SQL Server 表 (people) 中检索记录。该表有20多个字段,包括varbinary类型。
现在,SQL 查询类似于
SELECT * FROM people
在我的 BLL 类中,我将调用 DAL.GetPeople(),它将返回所有列。
指定要返回哪些列以提高性能的最佳方法是什么?例如,有时我想返回所有字段,有时只返回一两个。
更新 为了更好地解释它: 在 DAL 中,我有一个调用 SQL Server 函数 GetPeople 的方法 GetPeople()。 在 BLL 中,我有一个方法 GetPeople(),它在执行一些业务逻辑后调用 DAL.GetPeople()。 在我的表示层中,我调用了 BLL.GetPeople()。
这是可行的,但在 SQL 函数上,我有“SELECT * FROM people”。有时我只想从表中检索一列(例如名称),但在这种情况下,所有列都会返回,我认为这会影响性能。
所以,我想对此 SQL Server 函数进行一种动态 SELECT 查询,其返回的列将取决于我如何调用该函数...
【问题讨论】:
-
我认为这取决于您如何编写 DAL。 ADO、EF、Simple.Data?就目前而言,这可能是一个过于开放的问题?
-
重要的是您的 GetPeople 方法返回什么类型 - 类、数据集还是其他?另外,不要使用 Select * from ANYTHING。明确指定列。
-
一个数据集...是此方法将返回的内容。当然,我不想用“*”,所以我要指定列……
标签: vb.net data-access-layer 3-tier