我正在尝试使用本地DBSet运行查询,但我遇到了我提出的两个解决方案的问题。
解决方案1:这将运行查询并将查询结果绑定到结果控件,并且可以编辑数据并将其保存到数据库中。但是,如果我尝试在同一个表上运行另一个查询(如果我切换表一切正常),结果项不会更新(它会添加任何新结果,但任何旧结果应该不再存在)
//This part gets a DBSet from the context with the passed in table
Type t = context.GetType();
dynamic myDBSet= t.InvokeMember(table,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, context, new object[0]);
//This is the query I want to run. I am then loading it into the localDBSet
((IQueryable)myDBSet).AsQueryable().Where(condition).Load();
results.ItemsSource = myDBSet.Local;
解决方案2:这将运行查询并正确绑定数据。此外,数据将针对所有新查询进行更新,但数据网格中的数据不再可编辑
//This part gets a DBSet from the context with the passed in table
Type t = context.GetType();
dynamic myDBSet= t.InvokeMember(table,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.GetProperty, null, context, new object[0]);
//This is the query I want to run. I am then loading it into the localDBSet
((IQueryable)myDBSet).AsQueryable().Where(condition).Load();
DbSet copiedDBSet= myDBSet;
results.ItemsSource = copiedDBSet.Local.AsQueryable().Where(condition);
有没有人有一个解决方案可以让我运行多个查询并仍然编辑数据?
答案 0 :(得分:0)
有没有人有一个允许我运行多个查询的解决方案 并仍然编辑数据?
使用每个查询的上下文。
通过这种方式,您可以使用解决方案1并直接绑定到本地可观察集合。如果您不想要先前的查询结果,则无理由保留上下文。您是否有动态调用上下文dbset方法而不使用泛型context.Set<T>()
?