Я вижу странную проблему, и я думаю, что мне что-то не хватает. DTO, похоже, не заселяется при возврате. Только те свойства, которые являются init в запросе LINQ, устанавливаются, те, которые установлены в ParseJobResultsXml, не получают настройки, как показано на выходе DEBUG.Ошибка LINQ с DTO
DTO в настоящее время установки в запросе LINQ, что-то вроде этого:
public class JobResultDTO
{
[Key]
public string Id { get; set; }
public string Created { get; set; }
public string Finished { get; set; }
public string Status { get; set; }
public string PlantLink { get; set; }
public IEnumerable<string> Messages { get; set; }
public string JobType { get; set; }
}
private void ParseJobResultXml(string jobResultXml, JobResultDTO jobDto)
{
try
{
var xmlElement = XElement.Parse(jobResultXml);
if (xmlElement != null)
{
jobDto.Finished = xmlElement.Element("Date").Value;
jobDto.Status = xmlElement.Element("Status").Value;
jobDto.PlantLink = xmlElement.Element("PlantLink").Value;
jobDto.Messages = xmlElement.Element("Messages").Elements("Message").Select(m => m.Value);
}
}
catch { }
}
var jobsAndResults = _context.Jobs.Where(j => j.JobType == jobOpenPlant || j.JobType == jobNormSite)
.AsEnumerable()
.Where(j => JobResultXmlHelper.JobBelongsToUser(j.JobResult, userLogin))
.OrderByDescending(j => j.JobCreated)
.Select(j => new
{
Result = j.JobResult,
Dto = new JobResultDTO
{
Id = j.Id.ToString(),
JobType = j.JobType,
Created = (j.JobCreated ?? DateTime.Now).ToString()
}
});
foreach (var j in jobsAndResults)
{
ParseJobResultXml(j.Result, j.Dto);
DumpDTO(j.Dto); //I see it set up correctly here
}
jobs.AddRange(jobsAndResults.Select(j => j.Dto));
DumpDTO(jobs.ElementAt(0)); //Now only the Key property is set
return jobs;
Это отладочный вывод, что я вижу на сервере для двух DEBUG линий
На сервере ... Id: 51a8d041-5dff-4849-9651-9fb2fe89816a Статус: Закончен
Каталога - Обновлено 0 запись (ы) успешно: модели - Обновлен 0 записи (ы) успешно:
На сервере ... Id: 51a8d041-5dff-4849-9651-9fb2fe89816a Статус:
Как вы можете видеть, что второй один не имеет вход для статуса ColN. Есть идеи, почему это происходит?
Это не ясно, что вы пытаетесь DO- вы обновляете запись? Это проблема с запросом? Вам нужно включить более подробную информацию. –
Я добавил, что мои правки надеются, что это имеет смысл. – Sunit