修复guid在csharp处的排序异常问题

This commit is contained in:
xuejiaming 2021-11-12 14:31:45 +08:00
parent c2cf34288a
commit efa9476651
16 changed files with 26 additions and 4 deletions

View File

@ -8,6 +8,7 @@ using Sample.SqlServer.DbContexts;
using Sample.SqlServer.Shardings;
using ShardingCore;
using System;
using ShardingCore.Sharding.ShardingComparision;
namespace Sample.SqlServer
{

View File

@ -9,6 +9,8 @@ using ShardingCore.Sharding;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.ReadWriteConfigurations;
using ShardingCore.Sharding.ReadWriteConfigurations.Abstractions;
using ShardingCore.Sharding.ShardingComparision;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.DIExtensions
{

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Text;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.DIExtensions
{

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Text;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.DIExtensions
{

View File

@ -4,6 +4,7 @@ using System.Text;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.ReadWriteConfigurations;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.DIExtensions
{

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Text;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.DIExtensions
{

View File

@ -6,6 +6,7 @@ using System.Reflection;
using ShardingCore.Core.Internal.Visitors;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.Internals;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.Extensions
{

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.Sharding.Internals
{

View File

@ -1,8 +1,9 @@
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Sharding.Abstractions;
namespace ShardingCore.Sharding.Abstractions
namespace ShardingCore.Sharding.ShardingComparision.Abstractions
{
/*
* @Author: xjm

View File

@ -1,11 +1,13 @@
using System;
using System.Collections.Concurrent;
using System.Data.SqlTypes;
using Microsoft.EntityFrameworkCore;
using ShardingCore.Extensions;
using ShardingCore.Sharding.Abstractions;
using ShardingCore.Sharding.Internals;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.Sharding
namespace ShardingCore.Sharding.ShardingComparision
{
/*
* @Author: xjm
@ -16,12 +18,16 @@ namespace ShardingCore.Sharding
public class CSharpLanguageShardingComparer<TShardingDbContext>:IShardingComparer<TShardingDbContext> where TShardingDbContext:DbContext,IShardingDbContext
{
private readonly ConcurrentDictionary<Type, object> _comparers = new ConcurrentDictionary<Type, object>();
public int Compare(IComparable x, IComparable y, bool asc)
public virtual int Compare(IComparable x, IComparable y, bool asc)
{
if (x is Guid xg && y is Guid yg)
{
return new SqlGuid(xg).SafeCompareToWith(new SqlGuid(yg), asc);
}
return x.SafeCompareToWith(y, asc);
}
public object CreateComparer(Type comparerType)
public object CreateComparer(Type comparerType)
{
var comparer = _comparers.GetOrAdd(comparerType,
key => Activator.CreateInstance(typeof(InMemoryShardingComparer<>).GetGenericType0(comparerType),

View File

@ -15,6 +15,7 @@ using ShardingCore.Core.VirtualDatabase.VirtualTables;
using ShardingCore.Core.VirtualRoutes.DataSourceRoutes.RouteRuleEngine;
using ShardingCore.Core.VirtualRoutes.TableRoutes.RouteTails.Abstractions;
using ShardingCore.Extensions;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore.Sharding

View File

@ -9,6 +9,7 @@ using System.Data.Common;
using System.Linq;
using ShardingCore.Core.VirtualRoutes.DataSourceRoutes;
using ShardingCore.Extensions;
using ShardingCore.Sharding.ShardingComparision.Abstractions;
namespace ShardingCore
{

View File

@ -10,6 +10,7 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using ShardingCore.Bootstrapers;
using ShardingCore.Sharding.ShardingComparision;
#if EFCORE5SQLSERVER
using ShardingCore.SqlServer;

View File

@ -10,6 +10,7 @@ using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ShardingCore.Bootstrapers;
using ShardingCore.EFCores;
using ShardingCore.Sharding.ShardingComparision;
using ShardingCore.Test50_2x.Domain.Entities;
using ShardingCore.Test50_2x.Shardings;

View File

@ -8,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ShardingCore.Bootstrapers;
using ShardingCore.Sharding.ShardingComparision;
using ShardingCore.Test50_3x.Domain.Entities;
using ShardingCore.Test50_3x.Shardings;

View File

@ -8,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ShardingCore.Bootstrapers;
using ShardingCore.Sharding.ShardingComparision;
using ShardingCore.Test6x.Domain.Entities;
using ShardingCore.Test6x.Shardings;