C# DbContext/EF6上的eSQL查询

C# DbContext/EF6上的eSQL查询,c#,entity-framework,C#,Entity Framework,我正在尝试使用ObjectContext将项目从旧的实体框架迁移到DbContext。我的问题是ObjectSet&EntityCollection现在是DbSet&ICollection,我的代码需要对表和实体导航/相关表运行动态查询 var flowers = Gardens.Where("it.Name = @name").First().Flowers.Where(blah); LINQ不是备选方案-必须基于动态构建字符串(eSQL按网格构建、按用户键入等,并用于Where、Group

我正在尝试使用ObjectContext将项目从旧的实体框架迁移到DbContext。我的问题是
ObjectSet&EntityCollection
现在是
DbSet&ICollection
,我的代码需要对表和实体导航/相关表运行动态查询

var flowers = Gardens.Where("it.Name = @name").First().Flowers.Where(blah);
LINQ不是备选方案-必须基于动态构建字符串(eSQL按网格构建、按用户键入等,并用于Where、GroupBy、OrderBy)。似乎只有
ObjectQuery
具有string/eSQL谓词


如何以同样适用于相关/外键表的最佳方式执行此操作?我在这里遗漏了什么吗?因为对于以前非常简单的东西来说,这似乎是一件困难的事情。

我通过创建一个T4文件来解决这个问题,该文件添加到主上下文(表上的查询)和所有实体(导航/外键)。以下是简化版本:

// Get table as ObjectQuery
var myGarden = ((IObjectContextAdapter)this).ObjectContext.CreateObjectSet<Garden>("Gardens").First();
// myGarden is ObjectQuery with eSQL support
var foo = myGarden.Where("it.Works = true");
// Get the Flowers (navigation) from the Garden entity as ObjectQuery
var flowers = (ObjectQuery<Flower>)Entry(myGarden).Collection<Flower>("Flowers").Query();
// flowers is ObjectQuery with eSQL support
flowers.Where("it.AlsoWorks = true");
//将表作为ObjectQuery获取
var myGarden=((IObjectContextAdapter)this.ObjectContext.CreateObjectSet(“Gardens”).First();
//myGarden是具有eSQL支持的ObjectQuery
var foo=myGarden.Where(“it.Works=true”);
//作为ObjectQuery从花园实体获取花朵(导航)
var flowers=(ObjectQuery)条目(myGarden.Collection(“flowers”).Query();
//flowers是支持eSQL的ObjectQuery
flowers.Where(“it.AlsoWorks=true”);

这就是我要建议的-下拉到
ObjectContext
谢谢,但是请注意导航/外键表(toublesome)在这里使用ObjectContext