当我们的开发人员编写数据访问代码时,如果应用程序应该可以很好地扩展并处理load / Hits,我们应该真正担心什么。
鉴于这个简单的问题,你将如何以可扩展的方式解决它。
1. ProjectResource
是一个类(分配给Project
的封装资源)
2.分配给Project的每个资源都是User
Class
3. User
中的每个Project
也有ReportingHead
和ProjectManager
,他们也是User
的实例
4.最后,有一个包含项目详细信息的Project
类
用户
项目
ProjectResource
ProjectResource
RESOURCEID
专案编号
用户ID
ReportingHead
ProjectManager
ProjectResource
ResourceId:String / Guid
项目:项目
用户:用户
ReportingHead:User
ProjectManager:用户
注意:
所有用户信息都存储在用户表
中所有项目信息都存储在项目表中
当遵循下面的项目操作中的资源申请时
首先获取项目记录
获取UserId,发出请求(使用Users DAL
)获取用户实例
获取ProjectId,发出请求(使用Projects DAL
)获取项目信息
最后将Users
和Project
分配给ProjectResource
的实例
显然,您可以在此处看到3 Db Calls
用于填充单个ProjectResource
,但是明确定义了关注点和管理对象的人员。 这是我计划的方式,因为connection pooling
和Sql Server
中也提供了ADO.net
。 {{1}}
还有另一种方法,使用表内连接然后填充,在单击中检索所有细节。
我应该采取哪种方式?为什么?
.NET 2.0,ASP.net 2.0,C#,Sql Server 2005,DB在同一台机器托管应用程序上。
答案 0 :(得分:1)
为了获得最佳性能和可扩展性,您应该尽量减少到DB的往返次数。为了向自己证明,只需运行一些基准测试;它很快变得清晰。
单次往返的一种方法是使用连接。另一种方法是返回多个结果集。后者有助于消除可能的重复数据。