gpt4 book ai didi

c# - 使用 WCF Ria 服务加载的通用方式?

转载 作者:行者123 更新时间:2023-11-30 12:46:10 25 4
gpt4 key购买 nike

如果可能的话,你能帮忙吗,有没有一种通用的加载操作方式

例如:这是获取部门数据并将其绑定(bind)到网格的正常方法

grid.ItemsSource = context.Departments;
LoadDepartmentsData();

private void LoadDepartmentsData()
{
EntityQuery<Department> query = context.GetDepartmentsQuery();
context.Load(query, LoadOperationIsCompleted, null);
}

private void LoadOperationIsCompleted(LoadOperation<Department> obj)
{
if (obj.HasError)
MessageBox.Show(obj.Error.Message);
}

所以我的问题是有可能有这样的东西吗?

    grid.ItemsSource = context.Departments;

grid.ItemsSource = context.Departments;
LoadData(“GetDepartmentsQuery”);

private void LoadData(string queryName)
{
…..?
}

private void LoadOperationIsCompleted(LoadOperation obj)
{
if (obj.HasError)
MessageBox.Show(obj.Error.Message);
}

所以我想知道是否有一种方法可以在一种方法中迭代上下文查询并将其与查询的名称进行比较,然后根据匹配的查询执行加载操作,如下所示

非常感谢您的帮助

最好的问候,

最佳答案

我已经做过类似的事情(通过一些调整,它可能完全符合您的要求,也可能不完全符合您的要求)。我为我的类中的客户端数据服务创建了一个基类,该服务被注入(inject)到我的 View 模型中。它具有类似于以下方法的内容(默认值有一些重载):

protected readonly IDictionary<Type, LoadOperation> pendingLoads = 
new Dictionary<Type, LoadOperation>();

protected void Load<T>(EntityQuery<T> query,
LoadBehavior loadBehavior,
Action<LoadOperation<T>> callback, object state) where T : Entity
{
if (this.pendingLoads.ContainsKey(typeof(T)))
{
this.pendingLoads[typeof(T)].Cancel();
this.pendingLoads.Remove(typeof(T));
}

this.pendingLoads[typeof(T)] = this.Context.Load(query, loadBehavior,
lo =>
{
this.pendingLoads.Remove(typeof(T));
callback(lo);
}, state);
}

然后我在数据服务中调用它:

Load<Request>(Context.GetRequestQuery(id), loaded =>
{
// Callback
}, null);

编辑:我不知道有什么方法可以通过 Ria Services 做到这一点(但是其他人可能会)。如果你真的想要,你可以做的是在基类中重载 Load 方法,它采用一个字符串,使用反射可以获得查询方法,例如(未经测试,我不知道这会产生什么影响):

// In the base class
protected void Load(string queryName)
{
// Get the type of the domain context
Type contextType = Context.GetType();
// Get the method information using the method info class
MethodInfo query = contextType.GetMethod(methodName);

// Invoke the Load method, passing the query we got through reflection
Load(query.Invoke(this, null));
}

// Then to call it
dataService.Load("GetUsersQuery");

...或者什么...

关于c# - 使用 WCF Ria 服务加载的通用方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21146745/

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