2010-12-13 38 views
0

Je vois un problème étrange et je pense qu'il me manque quelque chose. Le DTO ne semble pas être rempli à son retour. Seules les propriétés qui sont en cours dans la requête LINQ sont définies, celles qui sont définies dans ParseJobResultsXml ne sont pas configurées comme dans la sortie DEBUG.Erreur LINQ avec DTO

Le DTO est en cours de configuration dans une requête LINQ, quelque chose comme ceci:

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; 

Ceci est la sortie de débogage que je vois sur le serveur pour les deux lignes de DEBUG

Sur le serveur ... Id: 51a8d041-5dff-4849-9651-9fb2fe89816a Statut: Fini

Catalogue - Mise à jour 0 fiche (s) avec succès: Modèle - Mise à jour 0 fiche (s) avec succès:

Sur le serveur ... Id: 51a8d041-5dff-4849-9651-9fb2fe89816a Statut:

Comme vous pouvez le voir le 2e n'a pas d'entrée pour le statut coln. Des idées pour lesquelles cela se passe?

+0

Il est pas clair ce que vous essayez de faire- vous mettez à jour un dossier? Est-ce un problème d'interrogation? Vous devez inclure plus de détails. –

+0

J'ai ajouté mes modifications espérons que cela a du sens. – Sunit

Répondre

0

Je pense que votre code est correct, mais vous n'avez pas le temps d'attente. Je n'ai vu aucun LoadOperation dans votre syntaxe.

Votre code fonctionnera dans WPF, mais pas dans SilverLight.

* Mise à jour: * Essayez

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

Je l'ai dans la vue Silverlight. J'essaie de trouver pourquoi il n'est pas chargé dans le service de données avant même qu'il ne soit retourné au client. – Sunit

+0

cela pourrait être quelque chose en rapport avec [inclure]! –