Merge pull request #86 from zoriya/master

Add query root rewrite support
This commit is contained in:
Koen
2023-10-24 02:54:50 +01:00
committed by GitHub
15 changed files with 309 additions and 59 deletions
@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="$(TestEFCoreVersion)" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.12" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
<PackageReference Include="ScenarioTests.XUnit" Version="1.0.0" />
<PackageReference Include="Verify.Xunit" Version="11.5.0" />
@@ -0,0 +1,2 @@
SELECT [e].[Id], [e].[Id] * 5
FROM [Entity] AS [e]
@@ -0,0 +1,39 @@
using System.ComponentModel.DataAnnotations.Schema;
using System.Threading.Tasks;
using EntityFrameworkCore.Projectables.FunctionalTests.Helpers;
using Microsoft.EntityFrameworkCore;
using VerifyXunit;
using Xunit;
namespace EntityFrameworkCore.Projectables.FunctionalTests
{
[UsesVerify]
public class QueryRootTests
{
public record Entity
{
public int Id { get; set; }
[Projectable(UseMemberBody = nameof(Computed2))]
public int Computed1 => Id;
private int Computed2 => Id * 2;
[Projectable(UseMemberBody = nameof(_ComputedWithBaking))]
[NotMapped]
public int ComputedWithBacking { get; set; }
private int _ComputedWithBaking => Id * 5;
}
[Fact]
public Task UseMemberPropertyQueryRootExpression()
{
using var dbContext = new SampleDbContext<Entity>();
var query = dbContext.Set<Entity>();
return Verifier.Verify(query.ToQueryString());
}
}
}
@@ -61,7 +61,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}
@@ -77,7 +77,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}
@@ -93,7 +93,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}
@@ -109,7 +109,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}
@@ -125,7 +125,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}
@@ -141,7 +141,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}
@@ -157,7 +157,7 @@ namespace EntityFrameworkCore.Projectables.Tests.Services
);
var subject = new ProjectableExpressionReplacer(resolver);
var actual = subject.Visit(input);
var actual = subject.Replace(input);
Assert.Equal(expected.ToString(), actual.ToString());
}