我正在使用Winforms客户端直接拨打数据库的2层应用程序。在其中一种情况下,我需要向用户显示客户实体列表。问题在于,客户实体包含许多属性(有些很重),我只需要两个属性 - 名字和姓氏。因此,为了提高性能并使演示逻辑更清晰,我想创建某种customersummaryViewModel类,仅具有必需的属性,并使用Nhibernate的投影功能来加载它。我在这里担心的是,在这种情况下,我的数据访问逻辑与演示文稿相结合,对我而言,这在概念上似乎是错误的。

您认为这还可以还是有更好的解决方案?

有帮助吗?

解决方案

我认为您可以将CustomersummaryViewModel视为报告(CustomersummaryReport)。可以将您的实体查询这样的方案并将其视为报告是可以的。大多数报告使用多个实体和汇总查询更为复杂。该报告非常简单,但是您仍然可以像报告一样使用它。

您还提到表演很重要。这是使用单独的报告查询和DTO的另一个原因。客户实体听起来像您使用的“主要”实体之一。从数据库中检索它们的懒惰属性未初始化,需要大量时间才能优化客户实体本身,而是使用报告查询来检索有关它们的信息,这可能是一个警告。只是一个警告,因为我已经看到了需要的情况。

顺便说一句,您可以考虑使用LINQ,而不是预测,例如:

var reports = session.Linq<Customer>()
  .Where(condition)
  .Select(customer => new Report 
   { 
       FirstName = customer.FirstName, 
       LastName = customer.LastName 
   })
  .ToList();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top