dataobjects-net icon indicating copy to clipboard operation
dataobjects-net copied to clipboard

Support parameters defined outside of CachingQuery closure in compiled query execution

Open denisbredikhin opened this issue 3 years ago • 0 comments

With Query.Execute you can executed compiled query (so it should not be translated next time). You can also execute IQueryable using it, but you can't execute IQueryable constructed in other class. So this works:

[Test]
public void TestSimpleQueryable()
{
  var name = "some_name";
  var ents = Query.All<Enterprise>().Where(q => q.Name== name);
  Assert.AreEqual(0, Query.Execute(() => ents.Count()));
}

But this doesn't:

private static class QueryableProvider
{
  public static IQueryable<Enterprise> GetEnterprisesByName(string name)
  {
    return Query.All<Enterprise>().Where(q => q.Name==name);
  }
}

[Test]
public void TestGeneratedQueryable()
{
  var name = "some_name";
  var ents = QueryableProvider.GetEnterprisesByName(name);
  Assert.AreEqual(0, Query.Execute(() => ents.Count()));
}

denisbredikhin avatar Mar 18 '21 16:03 denisbredikhin