关于DAL层部分的后续问题。关于dealing with large objects
的第一个问题我有一个表(PlacesTable)由6个其他表连接(1:很多很多:很多关系)
在我的DAL中,我应该添加一个大查询来连接6个表格+ m:m参考表格(顺便说一下,它会产生多个我不需要Please refer to my old question的数据)并将所有数据放入它的特定对象属性,或者我应该为每个表使用单个查询并为每个获取的表创建一个对象..并最终将它们发送到UI?
如果我不够清楚,请告诉我您需要了解的更多信息!
提前感谢您的时间和帮助=)
答案 0 :(得分:2)
如果一个大的查询提供过多的重复数据,并且6次往返很慢......一些选项
你有任何性能差异吗?或者这是猜测驱动的优化?
答案 1 :(得分:1)
您的问题似乎是关于是否应将相关实体加载到Places对象中。听起来你的模型中有一些课程,这是一个很好的开始。
仅加载您需要的数据。考虑您的消费者(在这种情况下,UI)。你需要显示这些数据吗?只查询您需要的数据。在DAL中构建多个方法以确保当时加载正确的数据。即GetPlacesSummary()
以单向形式返回您的数据,而GetDetailedPlaces()
则返回更精细的数据集。
查看支持延迟加载的数据访问组件。这意味着只有当您访问这些属性(如Customer.Invoices.Count)时,才会从数据库中实际查询数据。
答案 2 :(得分:0)
最好使用单个查询返回UI所需的所有信息。
每个数据库连接都很慢,您必须等待所有数据库连接完成才能为UI准备好数据。
应用程序和SQL服务器之间最慢的是建立连接的行为 - 越少越好。
答案 3 :(得分:0)
通常,数据库在连接来自多个表的数据方面比其他技术更好。如果您进行一次查询,那么与进行多次查询相比,您将获得更好的性能。您还可以获得额外的好处,即不必在表和对象之间建立一对一的关系。