我有一个使用 mvvm 和 ria 服务的 Silverlight 应用程序。我在用户输入作业编号并单击查找的视图上有一个文本框。此查找按钮使用 xaml 中的 ICommand 转到此处..
public ICommand FindJob
{
get
{
return new DelegateCommand(BeginFindJob, (o) => true);
}
}
public void BeginFindJob(object o)
{
if (!IsDesignTime)
{
IsLoading = true;
string jobnum = o.ToString();
OnPropertyChanged("IsLoading");
LoadOperation<Job> loadOp = _context.Load<Job>(_context.GetJobsByJobNumQuery(jobnum));
loadOp.Completed += new EventHandler(loadOp_Completed);
}
}
它像这样在我的 ria 服务中使用 GetJobsByJobNumQuery。
public IQueryable<Job> GetJobsByJobNum(string JobNum)
{
var query = ((from j in this.ObjectContext.Jobs
where j.JobNumber == JobNum
select j) as ObjectQuery<Job>).Include("JobHeadings").Include("JobContracts").Include("JobTags").Include("JobMarket");
return query;
}
我希望它返回有关工作的所有信息,所以我编写了上面的查询以包含所有这些关系。在 linq 查询上放置一个断点并查看结果,它完全符合我的要求。所有字段、JobHeadings 和 Contracts 都在工作,并将所有绑定带回该作业。所以现在我将该查询带回我的视图模型并填充字段,就像这样..
void loadOp_Completed(object sender, EventArgs e)
{
try
{
LoadOperation<Job> loadOp = sender as LoadOperation<Job>;
if (!loadOp.HasError)
{
_job = loadOp.Entities.FirstOrDefault<Job>();
base.IsLoading = false;
base.ProgressBarVisibility = Visibility.Collapsed;
base.OnPropertyChanged("IsLoading");
base.OnPropertyChanged("ProgressBarVisibility");
base.OnPropertyChanged("CurrentJob");
}
}
catch (Exception ex)
{
}
}
我的问题是,没有关系数据返回。所有基本作业信息都从我的数据库中的作业表返回,但相关表中的任何信息都没有返回到我的视图模型中。将 bp 放入并查看应该包含所有内容的 _job,所有关系表 JobHeading/JobContract 都显示“枚举未产生任何结果”。
那么它是如何不回到视图模型的呢?我该怎么做才能将完整的查询结果放入视图/视图模型中,以便进行更改?