修复bug完成first的编写
This commit is contained in:
parent
ed89215482
commit
4cd1a8a073
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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.");
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue