diff --git a/src/BD.Common.Repositories.EFCore/Repositories/Abstractions/Repository`3.cs b/src/BD.Common.Repositories.EFCore/Repositories/Abstractions/Repository`3.cs index 50c603ed3..8dbe67ccb 100644 --- a/src/BD.Common.Repositories.EFCore/Repositories/Abstractions/Repository`3.cs +++ b/src/BD.Common.Repositories.EFCore/Repositories/Abstractions/Repository`3.cs @@ -143,8 +143,18 @@ protected virtual IQueryable Cast(IQueryable qu // EF Core 2.0 中已引入此行为。 对于早期版本,始终需要显式选择 Add 或 Update。 if (IsAutoGeneratedKey) { + DbRowExecResult dbRowExecResult; + var primaryKey = GetPrimaryKey(entity); + if (IRepository.IsDefault(primaryKey)) + { + dbRowExecResult = DbRowExecResult.Insert; + } + else + { + dbRowExecResult = DbRowExecResult.Update; + } var rowCount = await UpdateAsync(entity, cancellationToken); - return (rowCount, DbRowExecResult.InsertOrUpdate); + return (rowCount, dbRowExecResult); } else { diff --git a/src/BD.Common.Repositories.SQLitePCL/Repositories/Abstractions/Repository`2.cs b/src/BD.Common.Repositories.SQLitePCL/Repositories/Abstractions/Repository`2.cs index 5cb926c82..84e0098bb 100644 --- a/src/BD.Common.Repositories.SQLitePCL/Repositories/Abstractions/Repository`2.cs +++ b/src/BD.Common.Repositories.SQLitePCL/Repositories/Abstractions/Repository`2.cs @@ -68,20 +68,22 @@ Task CountAsync(CancellationToken t) public virtual async Task<(int rowCount, DbRowExecResult result)> InsertOrUpdateAsync(TEntity entity, CancellationToken cancellationToken = default) { var dbConnection = await GetDbConnection().ConfigureAwait(false); - var rowCount = await AttemptAndRetry(t => + var r = await AttemptAndRetry(async t => { t.ThrowIfCancellationRequested(); var primaryKey = GetPrimaryKey(entity); if (IRepository.IsDefault(primaryKey)) { - return dbConnection.InsertAsync(entity); + var rowCount = await dbConnection.InsertAsync(entity); + return (rowCount, DbRowExecResult.Insert); } else { - return dbConnection.InsertOrReplaceAsync(entity); + var rowCount = await dbConnection.InsertOrReplaceAsync(entity); + return (rowCount, DbRowExecResult.Update); } }, cancellationToken: cancellationToken).ConfigureAwait(false); - return (rowCount, DbRowExecResult.InsertOrUpdate); + return r; } #endregion diff --git a/src/BD.Common.Repositories/Enums/DbRowExecResult.cs b/src/BD.Common.Repositories/Enums/DbRowExecResult.cs index 4ef14a575..1aff47435 100644 --- a/src/BD.Common.Repositories/Enums/DbRowExecResult.cs +++ b/src/BD.Common.Repositories/Enums/DbRowExecResult.cs @@ -29,9 +29,4 @@ public enum DbRowExecResult : byte /// 删除 /// Delete, - - /// - /// 插入或更新 - /// - InsertOrUpdate, } diff --git a/src/BD.Common/Text/Encoding2.cs b/src/BD.Common/Text/Encoding2.cs index 5d8de4c58..423f6b81f 100644 --- a/src/BD.Common/Text/Encoding2.cs +++ b/src/BD.Common/Text/Encoding2.cs @@ -15,7 +15,7 @@ public static void RegisterCodePagesProvider() => Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); /// - /// 获取 GB 2312 编码 + /// 获取 GB2312 编码 /// /// public static Encoding GB2312 => GB2312_; diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 68755f6dc..505494ef4 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -10,7 +10,7 @@ enable true - 1.23.10823.11451 + 1.23.10824.11402 https://avatars.githubusercontent.com/u/79355691?s=200&v=4 江苏蒸汽凡星科技有限公司 ©️ $(Company). All rights reserved.