我正在开发一个 ASP.NET (VB.NET) Web Forms 网站,该网站从 SQL Server 2008 R2 数据库中检索数据。
以前我会在代码隐藏文件中编写 LINQ-to-SQL 代码。但是,从现在开始,我希望将我所有的 LINQ-to-SQL 代码包含在“帮助器”类中的共享函数中。
我知道如果我只返回一行,那么我的函数签名可以如下:
Public Shared Function GetMainBanner(pageId as Integer) As MainBanner
但是如果我返回零行或多行怎么办?以下哪一项是合适的/最便宜的:
Public Shared Function GetRelatedDls(pageId as Integer) As List(Of RelatedDl)
Public Shared Function GetRelatedDls(pageId as Integer) As IQueryable(Of RelatedDl)
Public Shared Function GetRelatedDls(pageId as Integer) As IEnumerable(Of RelatedDl)
'OR SOMETHING ELSE?
我最初的偏好List(Of RelatedDl)
纯粹是因为可读性,并且 IQueryable (我认为,但可能是错误的)如果我调用.Count
并.First
执行For Each
? 而且数据库交互很昂贵,不是吗?
鉴于以下情况:
- 我的大多数实体的属性都映射到
nvarchar(50)
orint
或bit
- 我的两个实体有一个属性映射到
nvarchar(MAX)
- 我的“getter”函数一次将返回大约 5 - 25 行
- 在处理 ASPX 页面请求时,将调用大约 10 - 20 个“getter”函数
- 它运行在功能中等的 Windows 2008 服务器上的网站
哪个是最好的选择,或者是否有上面未列出的替代方案?
非常感谢。