На сервере я преобразовывал свой запрос LINQ to SQL в «IEnumerable», вызывая «AsEnumerable» для него. Затем я проецировал его в свой POCO / DTO, а затем преобразовал обратно в «IQueryable», вызвав «AsQueryable». Я делал это, потому что некоторые вещи, которые я делал с запросом, не могли быть выполнены с IQueryable (их нельзя было преобразовать в SQL). Когда я вынул это, все работало нормально. Я все еще хотел бы знать, почему это терпело крах.
[ProjectManagerAuthorization]
public IQueryable<ProjectSummary> GetMachiningProjects()
{
var ret = (from project in _dataContext.DAProjects
where project.Status == "purchased" ||
project.Status == "ready" ||
project.Status == "machining" ||
project.Status == "onhold" ||
project.Status == "machined"
select project).AsEnumerable();
return (from project in ret
select new ProjectSummary
{
ID = GetProjectID(project),
ProjectNumber = project.ProjectNumber,
StoreNumber = project.StoreNumber,
ProjectName = project.ProjectName,
OwnerEmail = project.OwnerEmail,
SheetQuantity = project.SheetQuantity ?? 0.0f,
EdgeLength = project.EdgeLength ?? 0.0f,
Price = project.Price ?? 0.0m,
SheetMaterialDescription = GetProjectSheetStockDescription(project),
BandingMaterialDescription = GetProjectBandingStockDescription(project),
Status = (ProjectStatus)Enum.Parse(typeof(ProjectStatus), project.Status, true),
SubmitDate = UtcNormalizeDateTime(project.SubmitDate),
PurchaseDate = UtcNormalizeDateTime(project.PurchaseDate),
UsingQueuedMachine = true,
QueuedMachineID = project.QueuedMachineID,
QueuedMachineOrder = LookupQueuedMachineOrder(project)
}).AsQueryable();
}