【发布时间】:2011-10-28 07:35:50
【问题描述】:
我想知道是否有人可以指出我正确的方向。我最近开始玩 LinqToSQL,喜欢强类型数据对象等。
我只是在努力理解对数据库性能等的影响。例如,假设我正在开发一个简单的用户个人资料页面。该页面显示有关用户的基本信息、有关他们最近活动的一些信息以及未读通知列表。
如果我正在为此页面开发存储过程,我可以创建一个 SP,它返回多个数据表,涵盖所有必需的信息 - 从而产生一个 db 调用。
但是,使用 LinqToSQL,这可能会导致多次调用 - 一个用于用户信息,至少一个用于活动,至少一个用于通知,如果我想要更多关于通知的信息,这可能会导致进一步调用 - 多个数据库调用。
我应该担心由于使用这种设计模式而发生的数据库调用的数量吗?即,多个数据库握手等会降低我的数据库等吗?
非常感谢您对此的看法!
谢谢 大卫
【问题讨论】:
-
我不了解 Linq to SQL - 我更了解 Linq to Entities。理想情况下,任何 ORM 风格的系统都应该缓存调用,以便您只在需要时调用数据库,并尽可能少地进行访问。当然,您可以自己编写服务器端实现来利用这种批处理,而不是强制 ORM 来拆分您的调用(例如,只使用一个存储库/上下文整个请求,并充分利用
IEnumerabledeferment,而不是调用一堆创建和销毁上下文的函数,并且一直调用ToList。 -
他们也应该利用连接池,所以即使你“关闭连接”,你真的只是将它返回到池中。同样,Linq to Entities 会这样做,我不知道 Linq to SQL 是否会这样做。
-
我想知道完全相同的事情,为了测试这一点,我创建了一个带有两种方法的简单页面,一种调用 Linq 查询,另一种调用 SQL 存储过程,当这些方法完成时,它们将具有执行完全相同的操作,计时器在方法启动时触发,在方法结束时停止,然后将结果打印到屏幕上,您可能希望尝试类似的方法来测试哪种方法最适合您。我会发布我的结果,但这只是一个附带项目,遗憾的是还没有完成
标签: c# sql-server vb.net linq-to-sql