在我的应用程序中,我有几个DataContexts连接到具有不同模式的不同数据库.在自定义用户控件中,我显示查询结果并让用户编辑它们,当用户编辑数据时,我希望将更改保留到数据库中.为此,我需要一个对源DataContext(或至少是源datacontext类型)的引用,所以我可以做一个DataContext.SubmitChanges();
有没有办法确定查询来自哪个DataContext? DataQuery类本身被标记为内部,因此我无法访问其上下文属性而不诉诸丑陋的反射黑客,所以我正在寻找一种更清晰的方法.
有几种解决这个问题的方法,例如传递对源DataContext的引用,但我想必须有一种更简单的方法来做到这一点.
编辑:
以下代码有效,但很难看:
FieldInfo contextField = query.GetType().GetField("context", BindingFlags.Instance | BindingFlags.NonPublic);
if (query != null)
{
queryContext = contextField.GetValue(value) as DataContext;
}
最佳答案 我认为你将不得不简单地将DataContext传递给代码(手动).抱歉.