优化代码移除不需要的类库

This commit is contained in:
xuejiaming 2022-11-23 16:38:34 +08:00
parent 4276d23cf3
commit 2e15f163f8
28 changed files with 135 additions and 147 deletions

View File

@ -17,7 +17,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -12,7 +12,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src5\ShardingCore5\ShardingCore5.csproj" />
</ItemGroup>

View File

@ -13,7 +13,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -10,7 +10,6 @@
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -13,7 +13,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -12,7 +12,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -16,7 +16,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -11,7 +11,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -15,7 +15,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -8,7 +8,6 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -9,7 +9,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src3\ShardingCore3\ShardingCore3.csproj" />
</ItemGroup>

View File

@ -9,7 +9,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -11,7 +11,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -9,7 +9,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -11,7 +11,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>

View File

@ -1,4 +1,3 @@
#if SHARDINGCORE2_6
using System;
using System.Collections;
using System.Collections.Generic;
@ -18,7 +17,7 @@ namespace ShardingCore.Core.Internal.Visitors.Querys
* @Date: Saturday, 20 February 2021 11:14:35
* @Email: 326308290@qq.com
*/
#if EFCORE2 || EFCORE3 || NETSTANDARD2_0
#if EFCORE2 || EFCORE3
/// <summary>
/// 获取分表类型
/// </summary>
@ -115,7 +114,7 @@ namespace ShardingCore.Core.Internal.Visitors.Querys
}
#endif
#if EFCORE5 || NETSTANDARD2_1 || EFCORE6
#if EFCORE5|| EFCORE6 || EFCORE7
/// <summary>
/// 获取分表类型
/// </summary>
@ -138,7 +137,11 @@ namespace ShardingCore.Core.Internal.Visitors.Querys
{
if (node is QueryRootExpression queryRootExpression)
{
_shardingEntities.Add(queryRootExpression.EntityType.ClrType);
#if EFCORE7
_shardingEntities.Add(queryRootExpression.ElementType);
#else
_shardingEntities.Add(queryRootExpression.EntityType.ClrType);
#endif
}
return base.VisitExtension(node);
}
@ -213,4 +216,3 @@ namespace ShardingCore.Core.Internal.Visitors.Querys
#endif
}
#endif

View File

@ -1,117 +1,117 @@
#if EFCORE7
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query;
using ShardingCore.Core.TrackerManagers;
using ShardingCore.Extensions;
namespace ShardingCore.Core.Internal.Visitors.Querys
{
/*
* @Author: xjm
* @Description:
* @Date: Saturday, 20 February 2021 11:14:35
* @Email: 326308290@qq.com
*/
/// <summary>
/// 获取分表类型
/// </summary>
internal class QueryEntitiesVisitor : ExpressionVisitor
{
private readonly ITrackerManager _trackerManager;
private readonly ISet<Type> _shardingEntities = new HashSet<Type>();
public QueryEntitiesVisitor(ITrackerManager trackerManager)
{
_trackerManager = trackerManager;
}
public ISet<Type> GetQueryEntities()
{
return _shardingEntities;
}
protected override Expression VisitExtension(Expression node)
{
if (node is QueryRootExpression queryRootExpression)
{
_shardingEntities.Add(queryRootExpression.ElementType);
}
return base.VisitExtension(node);
}
protected override Expression VisitMethodCall(MethodCallExpression node)
{
var methodName = node.Method.Name;
if (methodName == nameof(EntityFrameworkQueryableExtensions.Include) || methodName == nameof(EntityFrameworkQueryableExtensions.ThenInclude))
{
var genericArguments = node.Type.GetGenericArguments();
for (var i = 0; i < genericArguments.Length; i++)
{
var genericArgument = genericArguments[i];
if (typeof(IEnumerable).IsAssignableFrom(genericArgument))
{
var arguments = genericArgument.GetGenericArguments();
foreach (var argument in arguments)
{
//if is db context model
if (_trackerManager.IsDbContextModel(argument))
{
_shardingEntities.Add(argument);
}
}
}
if (!genericArgument.IsSimpleType())
{
//if is db context model
if (_trackerManager.IsDbContextModel(genericArgument))
{
_shardingEntities.Add(genericArgument);
}
}
}
}
return base.VisitMethodCall(node);
}
protected override Expression VisitMember
(MemberExpression memberExpression)
{
// Recurse down to see if we can simplify...
var expression = Visit(memberExpression.Expression);
// If we've ended up with a constant, and it's a property or a field,
// we can simplify ourselves to a constant
if (expression is ConstantExpression)
{
object container = ((ConstantExpression)expression).Value;
var member = memberExpression.Member;
if (member is FieldInfo fieldInfo)
{
object value = fieldInfo.GetValue(container);
if (value is IQueryable queryable)
{
_shardingEntities.Add(queryable.ElementType);
}
//return Expression.Constant(value);
}
if (member is PropertyInfo propertyInfo)
{
object value = propertyInfo.GetValue(container, null);
if (value is IQueryable queryable)
{
_shardingEntities.Add(queryable.ElementType);
}
}
}
return base.VisitMember(memberExpression);
}
}
}
#endif
// #if EFCORE7
// using System;
// using System.Collections;
// using System.Collections.Generic;
// using System.Linq;
// using System.Linq.Expressions;
// using System.Reflection;
// using Microsoft.EntityFrameworkCore;
// using Microsoft.EntityFrameworkCore.Query;
// using ShardingCore.Core.TrackerManagers;
// using ShardingCore.Extensions;
//
// namespace ShardingCore.Core.Internal.Visitors.Querys
// {
// /*
// * @Author: xjm
// * @Description:
// * @Date: Saturday, 20 February 2021 11:14:35
// * @Email: 326308290@qq.com
// */
// /// <summary>
// /// 获取分表类型
// /// </summary>
// internal class QueryEntitiesVisitor : ExpressionVisitor
// {
// private readonly ITrackerManager _trackerManager;
// private readonly ISet<Type> _shardingEntities = new HashSet<Type>();
//
// public QueryEntitiesVisitor(ITrackerManager trackerManager)
// {
// _trackerManager = trackerManager;
// }
//
// public ISet<Type> GetQueryEntities()
// {
// return _shardingEntities;
// }
//
// protected override Expression VisitExtension(Expression node)
// {
// if (node is QueryRootExpression queryRootExpression)
// {
// _shardingEntities.Add(queryRootExpression.ElementType);
// }
// return base.VisitExtension(node);
// }
//
// protected override Expression VisitMethodCall(MethodCallExpression node)
// {
// var methodName = node.Method.Name;
// if (methodName == nameof(EntityFrameworkQueryableExtensions.Include) || methodName == nameof(EntityFrameworkQueryableExtensions.ThenInclude))
// {
// var genericArguments = node.Type.GetGenericArguments();
// for (var i = 0; i < genericArguments.Length; i++)
// {
// var genericArgument = genericArguments[i];
// if (typeof(IEnumerable).IsAssignableFrom(genericArgument))
// {
// var arguments = genericArgument.GetGenericArguments();
// foreach (var argument in arguments)
// {
// //if is db context model
// if (_trackerManager.IsDbContextModel(argument))
// {
// _shardingEntities.Add(argument);
// }
// }
// }
//
// if (!genericArgument.IsSimpleType())
// {
// //if is db context model
// if (_trackerManager.IsDbContextModel(genericArgument))
// {
// _shardingEntities.Add(genericArgument);
// }
// }
// }
// }
// return base.VisitMethodCall(node);
// }
// protected override Expression VisitMember
// (MemberExpression memberExpression)
// {
// // Recurse down to see if we can simplify...
// var expression = Visit(memberExpression.Expression);
//
// // If we've ended up with a constant, and it's a property or a field,
// // we can simplify ourselves to a constant
// if (expression is ConstantExpression)
// {
// object container = ((ConstantExpression)expression).Value;
// var member = memberExpression.Member;
// if (member is FieldInfo fieldInfo)
// {
// object value = fieldInfo.GetValue(container);
// if (value is IQueryable queryable)
// {
// _shardingEntities.Add(queryable.ElementType);
// }
// //return Expression.Constant(value);
// }
// if (member is PropertyInfo propertyInfo)
// {
// object value = propertyInfo.GetValue(container, null);
// if (value is IQueryable queryable)
// {
// _shardingEntities.Add(queryable.ElementType);
// }
// }
// }
// return base.VisitMember(memberExpression);
// }
// }
// }
//
// #endif

View File

@ -34,6 +34,7 @@
</None>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.0" />
</ItemGroup>
<ItemGroup>

View File

@ -29,6 +29,7 @@
<Compile Remove="..\..\src\ShardingCore\bin\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.2.6" />
</ItemGroup>
</Project>

View File

@ -29,6 +29,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.31" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.31" />
</ItemGroup>

View File

@ -31,6 +31,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.17" />
</ItemGroup>

View File

@ -31,6 +31,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.11" />
</ItemGroup>

View File

@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PrivateAssets>all</PrivateAssets>

View File

@ -11,7 +11,7 @@
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="7.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="Xunit.DependencyInjection" Version="8.5.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">

View File

@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.6" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="Xunit.DependencyInjection" Version="7.1.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
@ -19,7 +19,6 @@
<ItemGroup>
<ProjectReference Include="..\..\src2\ShardingCore2\ShardingCore2.csproj" />
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
</ItemGroup>
</Project>

View File

@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="3.1.29" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.18" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="Xunit.DependencyInjection" Version="7.1.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
@ -18,7 +18,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src3\ShardingCore3\ShardingCore3.csproj" />
</ItemGroup>
</Project>

View File

@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="5.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.9" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="Xunit.DependencyInjection" Version="7.1.0" />
@ -20,7 +20,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src5\ShardingCore5\ShardingCore5.csproj" />
</ItemGroup>
</Project>

View File

@ -10,7 +10,7 @@
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="6.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.9" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="Xunit.DependencyInjection" Version="8.5.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
@ -19,7 +19,6 @@
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src2_6\ShardingCore.2_6\ShardingCore.2_6.csproj" />
<ProjectReference Include="..\..\src6\ShardingCore6\ShardingCore6.csproj" />
</ItemGroup>