gpt4 book ai didi

silverlight - RIA 服务 - Silverlight 4.0 - 从代码访问实体

转载 作者:行者123 更新时间:2023-12-04 03:25:46 24 4
gpt4 key购买 nike

我有一个奇怪的情况,我有一个简单的项目来测试 Silverlight 4.0 中的 RIA 功能。

当我将数据源用于域服务时,它工作得很好,但是当我想从代码访问上下文并执行简单查询时,我返回 0 行。

//test One with query provided to DataSource
var q = ctx.GetDoctorsWithPatientsAndHospitalQuery();
var result = ctx.Load(q);

//test Two using EntityQuery
EntityQuery<Doctor> query =
from c in ctx.GetDoctorsWithPatientsAndHospitalQuery()
select c;
LoadOperation<Doctor> loadOp = this.ctx.Load(query);
var result2 = loadOp.Entities;

//test Three using only entity and Linq
var result3 = ctx.Doctors.ToList();

奇怪的是,当我想从代码中添加新的实体实例时,它工作得很好。

Doctor newDoctor = new Doctor()
{
FirstName = firstNameTextBoxNew.Text,
LastName = lastNameTextBoxNew.Text,
Hospital_Id = tmp,
Hospital = tmpH
};

ctx.Doctors.Add(newDoctor);
ctx.SubmitChanges();

谁能指出我在从代码中执行选择时做错了什么?

问候,丹尼尔·斯科沃伦斯基

最佳答案

调用“LoadOperation loadOp = this.ctx.Load(query);”来自代码是一个异步操作,因此您基本上是在结果完成之前检查结果。

如果您想查看结果,您需要向 Load() 方法提供回调,该方法将在数据加载后执行。

域服务的数据源处理异步更新,因此在加载操作完成时继续传播更改。

您的“保存”有效,因为它不会等待结果。之后您正在手动检查数据库。不在代码中检查它。

希望这对您有所帮助。

作为快速检查,试试这个(“result2 =”行上的断点)。在此示例中,您的 loadOp 是多余的,但我不想过多更改您的代码:

LoadOperation<Doctor> loadOp = this.ctx.Load(query, loadOperation => 
{
var result2 = loadOp.Entities;
}, null);

**注意:对于那些想要编辑此代码的人...请不要。我想保留提问者代码的风格。 loadOp 和 loadOperation 指向同一个对象,result2 是提问者选择的变量名。*

关于silverlight - RIA 服务 - Silverlight 4.0 - 从代码访问实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com