修复guid在csharp处的排序异常问题
This commit is contained in:
parent
c2cf34288a
commit
efa9476651
|
@ -8,6 +8,7 @@ using Sample.SqlServer.DbContexts;
|
|||
using Sample.SqlServer.Shardings;
|
||||
using ShardingCore;
|
||||
using System;
|
||||
using ShardingCore.Sharding.ShardingComparision;
|
||||
|
||||
namespace Sample.SqlServer
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using ShardingCore.Sharding.Abstractions;
|
||||
using ShardingCore.Sharding.ShardingComparision.Abstractions;
|
||||
|
||||
namespace ShardingCore.Sharding.Internals
|
||||
{
|
||||
|
|
|
@ -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
|
|
@ -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),
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue