gpt4 book ai didi

c# - 使用 WCF RIA 服务的多个 LoadOperations 的模式

转载 作者:行者123 更新时间:2023-11-30 21:20:56 25 4
gpt4 key购买 nike

我希望能够在一次调用中加载多个 RIA 实体集,而无需将几个小的 LoadOperations 链接/嵌套在一起,以便它们按顺序加载。

我有几个页面上有许多组合框。这些组合框填充了来自数据库的静态值(例如状态值)。

现在,我通过一种方法将这些值预加载到我的 VM 中,该方法将我要加载的每种类型的一系列 LoadOperations 串在一起。例如:

public void LoadEnums() {
context.Load(context.GetMyStatusValues1Query()).Completed += (s, e) =>
{
this.StatusValues1 = context.StatusValues1;
context.Load(context.GetMyStatusValues2()).Completed += (s1, e1) =>
{
this.StatusValues2 = context.StatusValues2;
context.Load(context.GetMyStatusValues3Query()).Completed += (s2, e2) =>
{
this.StatusValues3 = context.StatusValues3;

(....and so on)


};
};
};
};

虽然这工作正常,但似乎有点令人讨厌。此外,我想知道最后一个加载操作何时完成,以便我可以在此之后加载我想要处理的任何实体,以便这些枚举值在组合框和列表框等表单元素中正确解析。 (我认为)如果不创建一个委托(delegate)并在最后一个加载操作完成时调用它,我无法在上面轻松地做到这一点。

所以我的问题是:有没有人知道更好的使用模式,理想情况下我可以在单个 LoadOperation 中加载所有静态实体集?

最佳答案

看起来答案很简单,至少在 RIA 服务 1.0 中是这样:

只需一个接一个地调用 LoadOperations,Domain Context 将使它们按照调用的顺序同步。

context.Load(context.GetMyStatusValues1Query()).Completed += (s, e) =>
{
this.StatusValues1 = context.StatusValues1;
}

context.Load(context.GetMyStatusValues2Query()).Completed += (s1, e1) =>
{
this.StatusValues1 = context.StatusValues2;
}

这对我来说似乎并不明显,因为我希望第二个查询在第一个查询之后立即调用,同时它仍在加载,并抛出“LoadOperation in progress”异常。

这很好,因为这意味着在我的问题示例中使用丑陋的嵌套 LoadOperation 模式的唯一原因是第二个 LoadOperation 取决于第一个的结果。

关于c# - 使用 WCF RIA 服务的多个 LoadOperations 的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2994148/

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