修复bug完成first的编写

This commit is contained in:
xuejiaming 2022-07-04 12:27:25 +08:00
parent ed89215482
commit 4cd1a8a073
6 changed files with 234 additions and 30 deletions

View File

@ -0,0 +1,76 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Sample.MySql.DbContexts;
#nullable disable
namespace Sample.MySql.Migrations
{
[DbContext(typeof(DefaultShardingDbContext))]
[Migration("20220704042701_init")]
partial class init
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.6")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("Sample.MySql.Domain.Entities.SysTest", b =>
{
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.Property<string>("UserId")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.HasKey("Id");
b.ToTable("SysTest", (string)null);
});
modelBuilder.Entity("Sample.MySql.Domain.Entities.SysUserLogByMonth", b =>
{
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.Property<DateTime>("Time")
.HasColumnType("datetime");
b.HasKey("Id");
b.ToTable("SysUserLogByMonth", (string)null);
});
modelBuilder.Entity("Sample.MySql.Domain.Entities.SysUserMod", b =>
{
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.Property<int>("Age")
.HasColumnType("int");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.HasKey("Id");
b.ToTable("SysUserMod", (string)null);
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,73 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Sample.MySql.Migrations
{
public partial class init : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "SysTest",
columns: table => new
{
Id = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
UserId = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table =>
{
table.PrimaryKey("PK_SysTest", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "SysUserLogByMonth",
columns: table => new
{
Id = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Time = table.Column<DateTime>(type: "datetime", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_SysUserLogByMonth", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "SysUserMod",
columns: table => new
{
Id = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Name = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Age = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_SysUserMod", x => x.Id);
})
.Annotation("MySql:CharSet", "utf8mb4");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "SysTest");
migrationBuilder.DropTable(
name: "SysUserLogByMonth");
migrationBuilder.DropTable(
name: "SysUserMod");
}
}
}

View File

@ -0,0 +1,74 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Sample.MySql.DbContexts;
#nullable disable
namespace Sample.MySql.Migrations
{
[DbContext(typeof(DefaultShardingDbContext))]
partial class DefaultShardingDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.6")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("Sample.MySql.Domain.Entities.SysTest", b =>
{
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.Property<string>("UserId")
.IsConcurrencyToken()
.IsRequired()
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.HasKey("Id");
b.ToTable("SysTest", (string)null);
});
modelBuilder.Entity("Sample.MySql.Domain.Entities.SysUserLogByMonth", b =>
{
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.Property<DateTime>("Time")
.HasColumnType("datetime");
b.HasKey("Id");
b.ToTable("SysUserLogByMonth", (string)null);
});
modelBuilder.Entity("Sample.MySql.Domain.Entities.SysUserMod", b =>
{
b.Property<string>("Id")
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.Property<int>("Age")
.HasColumnType("int");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(128)
.HasColumnType("varchar(128)");
b.HasKey("Id");
b.ToTable("SysUserMod", (string)null);
});
#pragma warning restore 612, 618
}
}
}

View File

@ -10,7 +10,7 @@ namespace ShardingCore.Extensions
public static async Task<List<TEntity>> ToStreamListAsync<TEntity>(this IAsyncEnumerable<TEntity> source, int? take=null,CancellationToken cancellationToken=default)
{
#if EFCORE2
var list = await asyncEnumeratorStreamMergeEngine.ToList<TEntity>(cancellationToken);
var list = await source.ToList<TEntity>(cancellationToken);
#endif
#if !EFCORE2
var list = new List<TEntity>(take??4);

View File

@ -46,7 +46,7 @@ namespace ShardingCore.Sharding.MergeEngines
{
//将toke改成1
var asyncEnumeratorStreamMergeEngine = new AsyncEnumeratorStreamMergeEngine<TEntity>(_streamMergeContext);
var list = asyncEnumeratorStreamMergeEngine.ToList();
var list = asyncEnumeratorStreamMergeEngine.ToStreamList();
return GetFirstOrDefault(list);
}

View File

@ -41,21 +41,8 @@ namespace ShardingCore.Sharding.MergeEngines
//将toke改成1
var asyncEnumeratorStreamMergeEngine = new AsyncEnumeratorStreamMergeEngine<TEntity>(_streamMergeContext);
#if EFCORE2
var list = asyncEnumeratorStreamMergeEngine.ToList();
#endif
#if !EFCORE2
var take = _streamMergeContext.GetTake();
var list = new List<TEntity>(take??4);
foreach (var element in asyncEnumeratorStreamMergeEngine)
{
list.Add(element);
}
#endif
if (list.IsEmpty())
throw new InvalidOperationException("Sequence contains no elements.");
return list.First();
var list = asyncEnumeratorStreamMergeEngine.ToStreamList();
return GetFirst(list);
}
public async Task<TEntity> MergeResultAsync(CancellationToken cancellationToken = new CancellationToken())
@ -63,25 +50,19 @@ namespace ShardingCore.Sharding.MergeEngines
//将toke改成1
var asyncEnumeratorStreamMergeEngine = new AsyncEnumeratorStreamMergeEngine<TEntity>(_streamMergeContext);
#if EFCORE2
var list = await asyncEnumeratorStreamMergeEngine.ToList<TEntity>(cancellationToken);
#endif
#if !EFCORE2
var take = _streamMergeContext.GetTake();
var list = new List<TEntity>(take??4);
await foreach (var element in asyncEnumeratorStreamMergeEngine.WithCancellation(cancellationToken))
{
list.Add(element);
}
#endif
var list =await asyncEnumeratorStreamMergeEngine.ToStreamListAsync(take,cancellationToken);
return GetFirst(list);
}
private TEntity GetFirst(List<TEntity> list)
{
if (list.IsEmpty())
throw new InvalidOperationException("Sequence contains no elements.");
return list.First();
}
// if (notNullResult.IsEmpty())
// throw new InvalidOperationException("Sequence contains no elements.");
//