我被告知要在下面的代碼中使用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, –