Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:36
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:33

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework v6.1](http://msdn.microsoft.com/en-us/data/aa937723) (EF).
Expand Down Expand Up @@ -147,7 +147,10 @@ More will appear as we move forward.*
### Group: Additional Features
#### [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs):
- Supported
* Subquery As Context Extension Method (line 68)
* Subquery As Context Extension Method (line 69)
* Filter With Subquery Reference (line 112)
- **Not Supported**
* Subquery As Variable Reference (line 82)



Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail With Sql of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:36
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:33

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework v6.1](http://msdn.microsoft.com/en-us/data/aa937723) (EF).
Expand Down Expand Up @@ -849,7 +849,7 @@ SELECT
### Group: Additional Features
#### [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs):
- Supported
* Subquery As Context Extension Method (line 68)
* Subquery As Context Extension Method (line 69)
* T-Sql executed is

```SQL
Expand All @@ -874,6 +874,32 @@ SELECT
) AS [Project4]
```

* Filter With Subquery Reference (line 112)
* T-Sql executed is

```SQL
SELECT
CASE WHEN ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[EfParents] AS [Extent1]
WHERE EXISTS (SELECT
1 AS [C1]
FROM ( SELECT
[Extent2].[EfParentId] AS [EfParentId],
(SELECT
COUNT(1) AS [A1]
FROM [dbo].[EfChilds] AS [Extent3]
WHERE [Extent2].[EfParentId] = [Extent3].[EfParentId]) AS [C1]
FROM [dbo].[EfParents] AS [Extent2]
) AS [Project1]
WHERE (0 = [Project1].[C1]) AND ([Project1].[EfParentId] = [Extent1].[EfParentId])
)
)) THEN cast(1 as bit) ELSE cast(0 as bit) END AS [C1]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
```

- **Not Supported**
* Subquery As Variable Reference (line 82)



Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Summary of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:36
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:33

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework v6.1](http://msdn.microsoft.com/en-us/data/aa937723) (EF).
Expand Down Expand Up @@ -55,8 +55,8 @@ More will appear as we move forward.*
* [DateTime](../TestGroup50Types/Test05DateTime.cs) (1 tests)

### Group: Additional Features
- Supported
* [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs) (1 tests)
- **Partially Supported**
* [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs) (2 of 3 tests passed)


The End
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Linq;
using DelegateDecompiler.EntityFramework.Tests.EfItems;
using DelegateDecompiler.EntityFramework.Tests.EfItems.Abstracts;
using DelegateDecompiler.EntityFramework.Tests.Helpers;
using NUnit.Framework;

Expand Down Expand Up @@ -68,5 +69,48 @@ public void TestSubqueryAsContextExtensionMethod()
env.CompareAndLogList(linq, dd);
}
}

[Test]
#if EF_CORE && !EF_CORE3 && !EF_CORE5
[Ignore("Not natively supported in EF_CORE < 3")]
#endif
public void TestSubqueryAsVariableReference()
{
using (var env = new MethodEnvironment(classEnv))
{
//ATTEMPT
env.AboutToUseDelegateDecompiler();

var referencedQuery = env.Db.Set<Animal>().Where(it => it.Species == "Canis lupus");
var query = env.Db.Set<Person>().Where(it => it.Animals.Intersect(referencedQuery).Any()).Decompile();


var list = query.ToList();

//VERIFY
Assert.AreEqual(1, list.Count());
}
}

[Test]
#if EF_CORE && !EF_CORE3 && !EF_CORE5
[Ignore("Not natively supported in EF_CORE < 3")]
#endif
public void TestFilterWithSubqueryReference()
{
using (var env = new MethodEnvironment(classEnv))
{
//SETUP
var linq = env.Db.EfParents.Any(x => env.Db.EfParents.Where(p => p.Children.Count() == 0).Contains(x));

//ATTEMPT
env.AboutToUseDelegateDecompiler();
var referencedQuery = env.Db.EfParents.Where(p => p.CountChildren == 0);
var dd = env.Db.EfParents.Decompile().Any(x => referencedQuery.Contains(x));

//VERIFY
env.CompareAndLogSingleton(linq, dd);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public override IQueryable CreateQuery(Expression expression)

public override IQueryable<TElement> CreateQuery<TElement>(Expression expression)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return new AsyncDecompiledQueryable<TElement>(this, inner.CreateQuery<TElement>(decompiled));
}

Expand All @@ -54,7 +54,7 @@ public Task<object> ExecuteAsync(Expression expression, CancellationToken cancel
{
throw new InvalidOperationException("The source IQueryProvider doesn't implement IDbAsyncQueryProvider.");
}
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return asyncProvider.ExecuteAsync(decompiled, cancellationToken);
}

Expand All @@ -65,7 +65,7 @@ public Task<TResult> ExecuteAsync<TResult>(Expression expression, CancellationTo
{
throw new InvalidOperationException("The source IQueryProvider doesn't implement IDbAsyncQueryProvider.");
}
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return asyncProvider.ExecuteAsync<TResult>(decompiled, cancellationToken);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail With Sql of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Summary of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ protected IAsyncQueryProvider AsyncQueryProvider
// ReSharper disable once VirtualMemberNeverOverridden.Global
public virtual TResult ExecuteAsync<TResult>(Expression expression, CancellationToken cancellationToken)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return (TResult)MethodCache<TResult>.ExecuteAsync(AsyncQueryProvider, decompiled, cancellationToken);
}

Expand Down Expand Up @@ -95,19 +95,19 @@ public AsyncDecompiledQueryProvider(IQueryProvider inner)

public override IQueryable<TElement> CreateQuery<TElement>(Expression expression)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return new EntityQueryable<TElement>(this, decompiled);
}

public virtual IAsyncEnumerable<TResult> ExecuteAsync<TResult>(Expression expression)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return (IAsyncEnumerable<TResult>)MethodCache<TResult>.ExecuteAsync(AsyncQueryProvider, decompiled);
}

public new virtual Task<TResult> ExecuteAsync<TResult>(Expression expression, CancellationToken cancellationToken)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return (Task<TResult>)MethodCache<TResult>.ExecuteAsync(AsyncQueryProvider, decompiled, cancellationToken);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down Expand Up @@ -146,7 +146,10 @@ More will appear as we move forward.*
### Group: Additional Features
#### [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs):
- Supported
* Subquery As Context Extension Method (line 68)
* Subquery As Context Extension Method (line 69)
* Filter With Subquery Reference (line 112)
- **Not Supported**
* Subquery As Variable Reference (line 82)



Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail With Sql of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down Expand Up @@ -506,13 +506,22 @@ More will appear as we move forward.*
### Group: Additional Features
#### [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs):
- Supported
* Subquery As Context Extension Method (line 68)
* Subquery As Context Extension Method (line 69)
* T-Sql executed is

```SQL

```

* Filter With Subquery Reference (line 112)
* T-Sql executed is

```SQL

```

- **Not Supported**
* Subquery As Variable Reference (line 82)



Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Summary of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down Expand Up @@ -55,8 +55,8 @@ More will appear as we move forward.*
* [DateTime](../TestGroup50Types/Test05DateTime.cs) (1 tests)

### Group: Additional Features
- Supported
* [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs) (1 tests)
- **Partially Supported**
* [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs) (2 of 3 tests passed)


The End
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ IAsyncQueryProvider AsyncQueryProvider

public virtual TResult ExecuteAsync<TResult>(Expression expression, CancellationToken cancellationToken)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return AsyncQueryProvider.ExecuteAsync<TResult>(decompiled, cancellationToken);
}

[SuppressMessage("EntityFramework", "EF1001")]
public override IQueryable<TElement> CreateQuery<TElement>(Expression expression)
{
var decompiled = expression.Decompile();
var decompiled = expression.Decompile().Optimize();
return new EntityQueryable<TElement>(this, decompiled);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down Expand Up @@ -146,7 +146,10 @@ More will appear as we move forward.*
### Group: Additional Features
#### [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs):
- Supported
* Subquery As Context Extension Method (line 68)
* Subquery As Context Extension Method (line 69)
* Filter With Subquery Reference (line 112)
- **Not Supported**
* Subquery As Variable Reference (line 82)



Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Detail With Sql of supported commands
============
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 19:37
## Documentation produced for DelegateDecompiler, version 0.32.1.0 on Tuesday, 25 October 2022 13:32

This file documents what linq commands **DelegateDecompiler** supports when
working with [Entity Framework Core](https://docs.microsoft.com/en-us/ef/core/) (EF).
Expand Down Expand Up @@ -775,7 +775,7 @@ WHERE [e].[StartDate] > '2000-01-01T00:00:00.0000000'
### Group: Additional Features
#### [Nested Expressions](../TestGroup90AdditionalFeatures/Test01NestedExpressions.cs):
- Supported
* Subquery As Context Extension Method (line 68)
* Subquery As Context Extension Method (line 69)
* T-Sql executed is

```SQL
Expand All @@ -786,6 +786,27 @@ SELECT [e].[EfParentId] AS [ParentId], COALESCE((
FROM [EfParents] AS [e]
```

* Filter With Subquery Reference (line 112)
* T-Sql executed is

```SQL
SELECT CASE
WHEN EXISTS (
SELECT 1
FROM [EfParents] AS [e]
WHERE EXISTS (
SELECT 1
FROM [EfParents] AS [e0]
WHERE ((
SELECT COUNT(*)
FROM [EfChildren] AS [e1]
WHERE [e0].[EfParentId] = [e1].[EfParentId]) = 0) AND ([e0].[EfParentId] = [e].[EfParentId]))) THEN CAST(1 AS bit)
ELSE CAST(0 AS bit)
END
```

- **Not Supported**
* Subquery As Variable Reference (line 82)



Expand Down
Loading