如何将Entity框架中的DbSet转换为ObjectQuery

ins*_*elf 12 linq-to-entities entity-framework-4 ef-code-first dbcontext

我正在使用CodeFirst方法并遇到了一个需要将DbSet转换为ObjectQuery的问题.这就是我为转换所做的.

ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext;
ObjectSet<Request> objectSet = objectContext.CreateObjectSet<Request>();
Run Code Online (Sandbox Code Playgroud)

其中db是从DbContext继承的上下文,Request是class.

因此,当我尝试调用期望ObjectQuery为ObjectQueryMethod(objectSet)的方法时,它会抛出以下错误.

"无法确定条件表达式的类型,因为'System.Data.Entity.DbSet <>'和'System.Data.Objects.ObjectQuery <>'之间没有隐式转换"

任何帮助是极大的赞赏!

ins*_*elf 23

我找到了答案.当然,可以使用下面的代码行将Entity框架中的DbSet转换为ObjectQuery.

ObjectContext objectContext = ((IObjectContextAdapter)db).ObjectContext;  
ObjectSet<Request> objectSet = objectContext.CreateObjectSet<Request>("Requests");
Run Code Online (Sandbox Code Playgroud)

哪里,

  • db- 来自的上下文类DbContext.
  • Requests- DbSet<Request>在Context类中定义.
  • objectSet- 现在可以传递给ObjectQuery.

  • AFAIK你可以将字符串作为参数保留,这使得它更少错误:`objectContext.CreateObjectSet <Request>();` (5认同)