我被告知要在下面的代码中使用automapper。由于太长而无法理解的原因,我无法澄清。我应该映射什么对象到什么对象?我没有看到“源”对象,因为源是数据库...如何在DTO上使用Automapper从EF返回?
真的很感谢任何关于如何使用automapper做到这一点的帮助。请注意,实际的字段是不相关的,我需要一般概念的帮助。我确实了解从一个对象映射到另一个对象时映射是如何工作的。
public IQueryable<Object> ReturnDetailedSummaries(long orgId)
{
var summaries = from s in db.ReportSummaries
where s.OrganizationId == orgId
select new SummaryViewModel
{
Id = s.Id,
Name = s.Name,
AuditLocationId = s.AuditLocationId,
AuditLocationName = s.Location.Name,
CreatedOn = s.CreatedOn,
CreatedById = s.CreatedById,
CreatedByName = s.User.Name,
OfficeId = s.OfficeId,
OfficeName = s.Office.Name,
OrganizationId = s.OrganizationId,
OrganizationName = s.Organization.Name,
IsCompleted = s.IsCompleted,
isHidden = s.isHidden,
numberOfItemsInAuditLocations = s.numberOfItemsInAuditLocations,
numberOfLocationsScanned = s.numberOfLocationsScanned,
numberOfItemsScanned = s.numberOfItemsScanned,
numberofDiscrepanciesFound = s.numberofDiscrepanciesFound
};
return summaries;
}
谢谢,我会尝试一下,然后回来接受答案。 – VSO
不要在EF中使用'Mapper.Map',它将查询比所需数据更多的数据,它基本上在EF表上执行'Select * from ...'。使用'Project.To(函数'而不是['AutoMapper.QueryableExtensions'](https://github.com/AutoMapper/AutoMapper/wiki/Queryable-Extensions)命名空间),它被设计为与'IQueryable '对象,并且只会查询映射中实际使用的列 –
OP没有声明他使用的是EF,上面的例子使用LinqToSql, –