【发布时间】:2012-06-28 09:46:27
【问题描述】:
我正在开发一个 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) 纯粹是因为可读性,如果我调用.Count 和.First 并执行For Each,IQueryable(我认为,但可能是错误的)会多次访问数据库?而且数据库交互是昂贵的,不是吗?
鉴于以下情况:
- 我的大多数实体都有映射到
nvarchar(50)或int或bit的属性 - 我的两个实体有一个属性映射到
nvarchar(MAX) - 我的“getter”函数一次将返回大约 5 - 25 行
- 在处理 ASPX 页面请求时,将调用大约 10 - 20 个“getter”函数
- 在功能适中的 Windows 2008 服务器上运行的网站
哪个是最好的选择,或者有没有上面没有列出的替代方案?
非常感谢。
【问题讨论】:
标签: sql-server vb.net linq sql-server-2008 linq-to-sql