Skip to content

Commit 852434c

Browse files
authored
PredefinedTypesHelper: Fix loading types from System.Data.Entity and EntityFramework (#807)
* PredefinedTypesHelper: Fix loading types from System.Data.Entity and EntityFramework * . * type * Add Demo * . * . * bs * 12 * 12test * . * . * fs * .
1 parent 2995cc8 commit 852434c

29 files changed

+425
-349
lines changed

System.Linq.Dynamic.Core.sln

+55-17
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeFirst.ConsoleApp", "src
151151
EndProject
152152
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CodeFirst.ConsoleApp8", "src-examples\CodeFirst.ConsoleApp8\CodeFirst.ConsoleApp8.csproj", "{68C7FF71-54F6-4D68-B419-65D1B10206D4}"
153153
EndProject
154+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo.Host", "src-console\Demo.Host\Demo.Host.csproj", "{D8368319-F370-4071-9411-A3DADB234330}"
155+
EndProject
156+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo.Plugin", "src-console\Demo.Plugin\Demo.Plugin.csproj", "{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}"
157+
EndProject
154158
Global
155159
GlobalSection(SolutionConfigurationPlatforms) = preSolution
156160
Debug|Any CPU = Debug|Any CPU
@@ -869,6 +873,22 @@ Global
869873
{51074A4C-15C2-4E72-81F2-2FC53903553B}.Release|x64.Build.0 = Release|Any CPU
870874
{51074A4C-15C2-4E72-81F2-2FC53903553B}.Release|x86.ActiveCfg = Release|Any CPU
871875
{51074A4C-15C2-4E72-81F2-2FC53903553B}.Release|x86.Build.0 = Release|Any CPU
876+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
877+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|Any CPU.Build.0 = Debug|Any CPU
878+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|ARM.ActiveCfg = Debug|Any CPU
879+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|ARM.Build.0 = Debug|Any CPU
880+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x64.ActiveCfg = Debug|Any CPU
881+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x64.Build.0 = Debug|Any CPU
882+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x86.ActiveCfg = Debug|Any CPU
883+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x86.Build.0 = Debug|Any CPU
884+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|Any CPU.ActiveCfg = Release|Any CPU
885+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|Any CPU.Build.0 = Release|Any CPU
886+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|ARM.ActiveCfg = Release|Any CPU
887+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|ARM.Build.0 = Release|Any CPU
888+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x64.ActiveCfg = Release|Any CPU
889+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x64.Build.0 = Release|Any CPU
890+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x86.ActiveCfg = Release|Any CPU
891+
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x86.Build.0 = Release|Any CPU
872892
{E36D1A08-F3ED-48C7-9DBF-8F625974A6C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
873893
{E36D1A08-F3ED-48C7-9DBF-8F625974A6C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
874894
{E36D1A08-F3ED-48C7-9DBF-8F625974A6C4}.Debug|ARM.ActiveCfg = Debug|Any CPU
@@ -917,22 +937,38 @@ Global
917937
{68C7FF71-54F6-4D68-B419-65D1B10206D4}.Release|x64.Build.0 = Release|Any CPU
918938
{68C7FF71-54F6-4D68-B419-65D1B10206D4}.Release|x86.ActiveCfg = Release|Any CPU
919939
{68C7FF71-54F6-4D68-B419-65D1B10206D4}.Release|x86.Build.0 = Release|Any CPU
920-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
921-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|Any CPU.Build.0 = Debug|Any CPU
922-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|ARM.ActiveCfg = Debug|Any CPU
923-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|ARM.Build.0 = Debug|Any CPU
924-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x64.ActiveCfg = Debug|Any CPU
925-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x64.Build.0 = Debug|Any CPU
926-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x86.ActiveCfg = Debug|Any CPU
927-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Debug|x86.Build.0 = Debug|Any CPU
928-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|Any CPU.ActiveCfg = Release|Any CPU
929-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|Any CPU.Build.0 = Release|Any CPU
930-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|ARM.ActiveCfg = Release|Any CPU
931-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|ARM.Build.0 = Release|Any CPU
932-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x64.ActiveCfg = Release|Any CPU
933-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x64.Build.0 = Release|Any CPU
934-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x86.ActiveCfg = Release|Any CPU
935-
{CA03FD55-9DAB-4827-9A35-A96D3804B311}.Release|x86.Build.0 = Release|Any CPU
940+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
941+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|Any CPU.Build.0 = Debug|Any CPU
942+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|ARM.ActiveCfg = Debug|Any CPU
943+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|ARM.Build.0 = Debug|Any CPU
944+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|x64.ActiveCfg = Debug|Any CPU
945+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|x64.Build.0 = Debug|Any CPU
946+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|x86.ActiveCfg = Debug|Any CPU
947+
{D8368319-F370-4071-9411-A3DADB234330}.Debug|x86.Build.0 = Debug|Any CPU
948+
{D8368319-F370-4071-9411-A3DADB234330}.Release|Any CPU.ActiveCfg = Release|Any CPU
949+
{D8368319-F370-4071-9411-A3DADB234330}.Release|Any CPU.Build.0 = Release|Any CPU
950+
{D8368319-F370-4071-9411-A3DADB234330}.Release|ARM.ActiveCfg = Release|Any CPU
951+
{D8368319-F370-4071-9411-A3DADB234330}.Release|ARM.Build.0 = Release|Any CPU
952+
{D8368319-F370-4071-9411-A3DADB234330}.Release|x64.ActiveCfg = Release|Any CPU
953+
{D8368319-F370-4071-9411-A3DADB234330}.Release|x64.Build.0 = Release|Any CPU
954+
{D8368319-F370-4071-9411-A3DADB234330}.Release|x86.ActiveCfg = Release|Any CPU
955+
{D8368319-F370-4071-9411-A3DADB234330}.Release|x86.Build.0 = Release|Any CPU
956+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
957+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
958+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|ARM.ActiveCfg = Debug|Any CPU
959+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|ARM.Build.0 = Debug|Any CPU
960+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|x64.ActiveCfg = Debug|Any CPU
961+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|x64.Build.0 = Debug|Any CPU
962+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|x86.ActiveCfg = Debug|Any CPU
963+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Debug|x86.Build.0 = Debug|Any CPU
964+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
965+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|Any CPU.Build.0 = Release|Any CPU
966+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|ARM.ActiveCfg = Release|Any CPU
967+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|ARM.Build.0 = Release|Any CPU
968+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|x64.ActiveCfg = Release|Any CPU
969+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|x64.Build.0 = Release|Any CPU
970+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|x86.ActiveCfg = Release|Any CPU
971+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C}.Release|x86.Build.0 = Release|Any CPU
936972
EndGlobalSection
937973
GlobalSection(SolutionProperties) = preSolution
938974
HideSolutionNode = FALSE
@@ -982,10 +1018,12 @@ Global
9821018
{9000129D-322D-4FE6-9C47-75464577C374} = {DBD7D9B6-FCC7-4650-91AF-E6457573A68F}
9831019
{ABB1BF71-8927-49BB-99F3-70BCB2CD161E} = {8463ED7E-69FB-49AE-85CF-0791AFD98E38}
9841020
{51074A4C-15C2-4E72-81F2-2FC53903553B} = {122BC4FA-7563-4E35-9D17-077F16F1629F}
1021+
{CA03FD55-9DAB-4827-9A35-A96D3804B311} = {7971CAEB-B9F2-416B-966D-2D697C4C1E62}
9851022
{E36D1A08-F3ED-48C7-9DBF-8F625974A6C4} = {BCA2A024-9032-4E56-A6C4-17A15D921728}
9861023
{9E0D0994-7D84-40FF-8383-189F142FEF11} = {BCA2A024-9032-4E56-A6C4-17A15D921728}
9871024
{68C7FF71-54F6-4D68-B419-65D1B10206D4} = {BCA2A024-9032-4E56-A6C4-17A15D921728}
988-
{CA03FD55-9DAB-4827-9A35-A96D3804B311} = {7971CAEB-B9F2-416B-966D-2D697C4C1E62}
1025+
{D8368319-F370-4071-9411-A3DADB234330} = {7971CAEB-B9F2-416B-966D-2D697C4C1E62}
1026+
{B01B327C-FC68-49B6-BDE3-A13D0C66DF5C} = {7971CAEB-B9F2-416B-966D-2D697C4C1E62}
9891027
EndGlobalSection
9901028
GlobalSection(ExtensibilityGlobals) = postSolution
9911029
SolutionGuid = {94C56722-194E-4B8B-BC23-B3F754E89A20}

src-console/ConsoleAppEF6_InMemory/ConsoleApp_net6.0_EF6_InMemory.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
55
<TargetFramework>net6.0</TargetFramework>
6-
<LangVersion>10</LangVersion>
6+
<LangVersion>12</LangVersion>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>
99

src-console/ConsoleAppEF6_Sqlite/ConsoleApp_net6.0_EF6_Sqlite.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
55
<TargetFramework>net6.0</TargetFramework>
6-
<LangVersion>10</LangVersion>
6+
<LangVersion>12</LangVersion>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>
99

src-console/ConsoleApp_net452_EF6/Program.cs

+8-5
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ class Program
99
{
1010
static void Main(string[] args)
1111
{
12-
using (var context = new KendoGridDbContext())
12+
var config = new ParsingConfig
1313
{
14-
var config = new ParsingConfig
15-
{
16-
UseParameterizedNamesInDynamicQuery = true
17-
};
14+
UseParameterizedNamesInDynamicQuery = true
15+
};
16+
17+
var q = new[] { 1, 2, 3 }.AsQueryable();
18+
var r = q.Where("it > 1").ToArray();
1819

20+
using (var context = new KendoGridDbContext())
21+
{
1922
var found1 = context.Employees.FirstOrDefault(config, "EmployeeNumber > 1000");
2023
Console.WriteLine($"found1 : {found1.Id} - {found1.EmployeeNumber}");
2124

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="Serilog" Version="3.1.1" />
12+
<PackageReference Include="Serilog.Exceptions" Version="8.4.0" />
13+
<PackageReference Include="Serilog.Sinks.Console" Version="5.0.1" />
14+
<!--<PackageReference Include="System.Linq.Dynamic.Core" Version="1.3.13" />-->
15+
</ItemGroup>
16+
17+
<ItemGroup>
18+
<ProjectReference Include="..\..\src\System.Linq.Dynamic.Core\System.Linq.Dynamic.Core.csproj" />
19+
</ItemGroup>
20+
21+
</Project>

src-console/Demo.Host/Program.cs

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
using System.Diagnostics;
2+
using System.Diagnostics.CodeAnalysis;
3+
using System.Linq.Dynamic.Core;
4+
using System.Reflection;
5+
using Serilog;
6+
using Serilog.Exceptions;
7+
8+
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve;
9+
10+
Log.Logger = new LoggerConfiguration()
11+
.Enrich.WithExceptionDetails()
12+
.WriteTo.Console(outputTemplate: "{Timestamp:HH:mm:ss.fff} [{Level}] {Message}{NewLine}{Exception}")
13+
.CreateLogger();
14+
15+
var customers = new List<Customer>
16+
{
17+
new(Guid.NewGuid(), [
18+
new Order(Guid.NewGuid()),
19+
new Order(Guid.NewGuid()),
20+
new Order(Guid.NewGuid()),
21+
new Order(Guid.NewGuid())
22+
]),
23+
new(Guid.NewGuid(), [
24+
new Order(Guid.NewGuid()),
25+
new Order(Guid.NewGuid())
26+
])
27+
};
28+
29+
Log.Information("--- LoadAdditionalAssembliesFromCurrentDomainBaseDirectory = {load} ---", false);
30+
var result = customers
31+
.AsQueryable()
32+
.Where("Orders.Count >= @0", 3)
33+
.OrderBy("Orders.Count")
34+
.ToList();
35+
Log.Information("Found {Count} customers: {Customers}", result.Count, result);
36+
37+
Log.Information(new string('*', 80));
38+
39+
Log.Information("--- LoadAdditionalAssembliesFromCurrentDomainBaseDirectory = {load} ---", true);
40+
var config = new ParsingConfig
41+
{
42+
LoadAdditionalAssembliesFromCurrentDomainBaseDirectory = true
43+
};
44+
var result2 = customers
45+
.AsQueryable()
46+
.Where(config, "Orders.Count >= @0", 3)
47+
.OrderBy("Orders.Count")
48+
.ToList();
49+
Log.Information("Found {Count} customers: {Customers}", result2.Count, result2);
50+
51+
return;
52+
53+
static Assembly? CurrentDomainOnAssemblyResolve(object? sender, ResolveEventArgs resolveEventArgs)
54+
{
55+
Log.Warning("Attempted to resolve assembly {Name} by {RequestingAssembly}", resolveEventArgs.Name, resolveEventArgs.RequestingAssembly?.GetName().Name);
56+
57+
return null;
58+
}
59+
60+
[SuppressMessage("Design", "CA1050:Declare types in namespaces")]
61+
[SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Global")]
62+
public record Order(Guid Id);
63+
64+
[SuppressMessage("Design", "CA1050:Declare types in namespaces")]
65+
[SuppressMessage("ReSharper", "NotAccessedPositionalProperty.Global")]
66+
public record Customer(Guid Id, List<Order> Orders);
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
</PropertyGroup>
8+
9+
<Target Name="CopyDllAfterBuild" AfterTargets="PostBuildEvent">
10+
<Copy
11+
SourceFiles="$(OutputPath)Demo.Plugin.dll"
12+
DestinationFolder="../Demo.Host/bin/Debug/net8.0" />
13+
</Target>
14+
15+
</Project>

src-console/Demo.Plugin/MyPlugin.cs

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Demo.Plugin;
2+
3+
public static class MyPlugin
4+
{
5+
public static void Print()
6+
{
7+
Console.WriteLine("Hello, World!");
8+
}
9+
}

src-console/build.ps1

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
if (Test-Path -Path ".\output") {
2+
Remove-Item -Force -Recurse -Path ".\output\"
3+
}
4+
else {
5+
New-Item -Path ".\output" -ItemType Directory
6+
}
7+
8+
9+
Write-Host "Build solution..."
10+
11+
dotnet build .\LinqCoreDemo.sln --nologo --configuration "Debug"
12+
13+
Write-Host "Publish projects..."
14+
dotnet publish .\src\Demo.Plugin\Demo.Plugin.csproj --nologo --no-build --configuration "Debug" --output .\output
15+
dotnet publish .\src\Demo.Host\Demo.Host.csproj --nologo --no-build --configuration "Debug" --output .\output

src/Directory.Build.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<Copyright>Copyright © ZZZ Projects</Copyright>
88
<DefaultLanguage>en-us</DefaultLanguage>
99
<GenerateDocumentationFile>true</GenerateDocumentationFile>
10-
<LangVersion>latest</LangVersion>
10+
<LangVersion>12</LangVersion>
1111
<Nullable>enable</Nullable>
1212
<PackageIcon>logo.png</PackageIcon>
1313
<PackageReadmeFile>PackageReadme.md</PackageReadmeFile>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace EntityFramework.DynamicLinq;
2+
3+
/// <summary>
4+
/// A dummy class to determine if the assembly is using EntityFramework.
5+
/// </summary>
6+
public struct EFType
7+
{
8+
}

src/EntityFramework.DynamicLinq/EntityFramework.DynamicLinq.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<PackageTags>system;linq;dynamic;entityframework;core;async</PackageTags>
1111
<ProjectGuid>{D3804228-91F4-4502-9595-39584E510000}</ProjectGuid>
1212
<TargetFrameworks>net45;net452;net46;netstandard2.1</TargetFrameworks>
13-
<LangVersion>10</LangVersion>
1413
<Version>1.3.$(PatchVersion)</Version>
1514
</PropertyGroup>
1615

0 commit comments

Comments
 (0)