2010-12-13 2 views
0

Я вижу странную проблему, и я думаю, что мне что-то не хватает. 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. Есть идеи, почему это происходит?

+0

Это не ясно, что вы пытаетесь DO- вы обновляете запись? Это проблема с запросом? Вам нужно включить более подробную информацию. –

+0

Я добавил, что мои правки надеются, что это имеет смысл. – Sunit

ответ

0

Я думаю, что ваш код верен, но у вас нет времени ожидания.

Я не видел LoadOperation в вашем синтаксисе.

Ваш код будет работать в WPF, но не в SilverLight.

* Обновление: * Попробуйте

foreach (var j in jobsAndResults) 
{ 
ParseJobResultXml(j.Result, j.Dto); 
DumpDTO(j.Dto); //I see it set up correctly here 
jobs.Add(j.Dto); 
} 
+0

У меня это в представлении Silverlight. Я пытаюсь найти, почему он не загружается в службу данных даже до того, как он возвращается клиенту. – Sunit

+0

это может быть что-то связанное с [include]! –

Смежные вопросы