我在 ADO.NET 数据服务中遇到了一个问题:
在组装实体进行存储时,我需要从查找文件中获取相关值。例如,一个人的状态代码分配为“待定”,该状态代码位于名为 StatusCodes 的表中。
在 Entity Framework 中,我需要将 person.StatusCode 的值设置为 StatusCode 的一个实例。在实体框架或 LINQ2Sql 中,我会这样:
var person = Person.CreatePerson(stuff);
var statCode = myContext.StatusCodeSet.Where(sc => sc.Description == "Pending").FirstOrDefault();
person.StatusCode = statCode;
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
statCode 查询在 ADO.NET 数据服务中不起作用,并且我收到运行时错误,指出该函数不受支持。我认为这是因为 statCode 查找不是异步调用。
然而,
var person = Person.CreatePerson(stuff);
var query = from stat in myContext.StatusCodeSet
where stat.Description == "Pending"
select stat;
var dsQuery = (DataServiceQuery<StatusCode>)query;
dsQuery.BeginExecute(
result => tutorApplication.StatusCode = dsQuery.EndExecute(result).FirstOrDefault(), null);
// ...more code here...
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
new AsyncCallback(OnSaveAllComplete),
null);
由于查询的异步性质,也不起作用,在人员保存发生之前结果不会返回。
我正确地接近这个吗?
谢谢