2010-12-13 1 views
0

私は奇妙な問題が発生していると私は何かが不足していると思う。返されたときにDTOに値が設定されていないようです。 LINQクエリで初期化されているプロパティのみが取得され、ParseJobResultsXmlで設定されているプロパティはDEBUG出力に表示されるようにセットアップされません。DTOでLINQエラー

DTOは、LINQクエリでこのような何か設定されている:これは私が2つのDEBUGラインサーバ上で

のために、サーバ上で見ているのデバッグ出力である

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; 

... イド:51a8d041-5dff-4849-9651-9fb2fe89816a状態:終了

カタログ - 正常に更新さ0のレコード(複数可): モデル - 成功した0レコードを更新:

a8d041-5dff-4849-9651-9fb2fe89816aステータス:サーバ... IDに0

あなたは第二1はステータスコルンのためのエントリがない見ることができるように。これがなぜ起こっているのか?

+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

それは[インクルード]に関連するものかもしれません! –