0

我正在尝试使用本地 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);

有没有人有一个解决方案可以让我运行多个查询并仍然编辑数据?

4

1 回答 1

0

有没有人有一个解决方案可以让我运行多个查询并仍然编辑数据?

每个查询使用一个上下文。

这样您就可以使用解决方案 1 并直接绑定到本地 observable 集合。如果您不想要以前的查询结果,那么没有理由保留上下文。您动态调用上下文 dbset 方法而不使用泛型的任何原因context.Set<T>()

于 2013-01-17T20:20:00.867 回答