ich Entity Framework verwende und ich versuche, mit Einheiten zu einem dto Objekt abzubilden den folgenden Code verwenden, aber etwas schief läuft:Mapping Entity Framework Einheit DTO-Objekt wählen
var fileUploads = _dbContext.FileUploads.Include("DocumentType").Include("Store");
if (jobSearchParams.DocumentTypeId != null)
{
fileUploads = fileUploads.Where(x => x.DocumentTypeID == 6);
}
if (jobSearchParams.StoreId != null)
{
fileUploads = fileUploads.Where(x => x.StoreID == jobSearchParams.StoreId);
}
if (!string.IsNullOrEmpty(jobSearchParams.Name))
{
fileUploads = fileUploads.Where(d => d.Name.Contains(jobSearchParams.Name));
}
var dtos = Mapper.Map<IEnumerable<JobDocumentDto>>(documents);
var cnt = fileUploads.Count(); // 1412
var fileDocuments = fileUploads.AsEnumerable().Select(d => new JobDocumentDto
{
DocumentID = d.ID,
StoreID = d.StoreID,
StoreName = d.Store.Name,
Document = Mapper.Map<DocumentDto>(d),
DocumentName = d.Name
}).ToList();
cnt = fileDocuments.Count; // 0
Mit dem AsEnumerable
in der Ausdruck ich habe 0 Objekte nach der Auswahl tun und wenn ich entfernen sie die AsEnumerable
ich die folgende Fehlermeldung erhalten:
System.NotSupportedException: LINQ to Entities does not recognize the method 'DataManagement.DTOs.DocumentDto MapDocumentDto' method, and this method cannot be translated into a store expression
Im Allgemeinen wird Linq to Enitities keine Methode innerhalb des Select-Bereichs akzeptieren - weil Sie mit der von Entity Framework generierten Abfrage nicht die Daten bearbeiten, sondern erst nach dem Aufruf von ToList() oder ToDictionary() tatsächlich die Daten aus der Datenbank haben . (nur eine kleine Bemerkung, die für jemanden von Nutzen sein könnte) – Vladimir