【发布时间】:2012-09-07 17:15:54
【问题描述】:
我有一个使用 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 都显示“枚举未产生任何结果”。
那么它是如何不返回视图模型的呢?我该怎么做才能将完整的查询结果放入视图/视图模型中以便进行更改?
【问题讨论】:
标签: c# linq entity-framework mvvm ria