注册

efcore无法正确返回刚刚插入的id

Wizr 2026/03/23 295 5 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:v8.1
【操作系统】:linux
【CPU】: Intel(R) Xeon(R) Gold 5220R CPU @ 2.20GHz
【问题描述】*:sequence id和timestamp联合主键,但是保存到数据库的时候SELECT "CreatedAt", "Id" FROM MMS."StripOperationHistories" WHERE sql%ROWCOUNT = 1 AND "Id" = scope_identity()报错,经测试主要是因为scope_identity返回了null。详细报错信息如下:

[2026-03-20T15:45:07 INF] Executed DbCommand (271ms) [Parameters=[:__request_Step_0='?' (Size = 100)], CommandType='Text', CommandTimeout='0'] SELECT TOP(1) "s"."Id", "s"."CreatedAt", "s"."DownloadFromStepId", "s"."Grouped", "s"."IsStepControl", "s"."ProductionCapacityControl", "s"."ShouldCreateNewMap", "s"."StepDownloadAction", "s"."StepName", "s"."StepUploadDataType", "s"."StepUploadMergeType", "s"."StepUploadShouldMerge", "s"."UpdatedAt" FROM "Steps" AS "s" WHERE "s"."StepName" = :__request_Step_0 [2026-03-20T15:45:07 INF] Executed DbCommand (233ms) [Parameters=[:__request_PackageName_0='?' (Size = 100)], CommandType='Text', CommandTimeout='0'] SELECT TOP(1) "p"."Id", "p"."CellColumns", "p"."CellDies", "p"."CellRows", "p"."Columns", "p"."CreatedAt", "p"."DefaultBinCode", "p"."LastUpdateUserId", "p"."PackageName", "p"."ReduceDefects", "p"."Rows", "p"."ShouldCreateNewMap", "p"."UpdatedAt" FROM "Packages" AS "p" WHERE "p"."PackageName" = :__request_PackageName_0 [2026-03-20T15:45:08 INF] Executed DbCommand (251ms) [Parameters=[:p0='?' (DbType = Int32), :p1='?' (Size = 100), :p2='?' (Size = 100), :p3='?' (Size = 100), :p4='?' (Size = 100), :p5='?' (Size = 100), :p6='?' (Size = 32767) (DbType = AnsiString), :p7='?' (Size = 1000), :p8='?' (DbType = Boolean), :p9='?' (DbType = Boolean), :p10='?' (DbType = Boolean), :p11='?' (DbType = Boolean), :p12='?' (DbType = Int64), :p13='?' (Size = 100), :p14='?' (DbType = Single), :p15='?' (Size = 32767), :p16='?' (Size = 100), :p17='?' (DbType = Int32), :p18='?' (Size = 100), :p19='?' (Size = 32767) (DbType = AnsiString), :p20='?' (DbType = Int32), :p21='?' (Size = 100), :p22='?' (DbType = Single), :p23='?' (Size = 100), :p24='?' (Size = 32767) (DbType = AnsiString), :p25='?' (DbType = Int32), :p26='?' (Size = 100), :p27='?' (DbType = Int32), :p28='?' (DbType = Int32), :p29='?' (DbType = Int32), :p30='?' (Size = 32767), :p31='?' (DbType = Int32), :p32='?' (DbType = DateTime2), :p33='?' (DbType = Single)], CommandType='Text', CommandTimeout='0'] INSERT INTO "StripMaps" ("Columns", "CusLotId", "CusWaferId", "Customer", "EqpModel", "EqpName", "ErrorDetail", "ErrorMessage", "HasProductRelation", "HasWaferRelation", "IsEdited", "IsMerged", "LastUpdateUserId", "LotId", "LotYield", "OriginLocation", "PackageName", "PassCount", "Product", "RawData", "Rows", "SpreadLotId", "SpreadLotYield", "StepName", "StripAxesInfo", "StripDataType", "StripId", "StripReUploadStatusType", "StripSourceType", "StripStatusType", "SubstrateSide", "TotalCount", "UpdatedAt", "Yield") VALUES (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9, :p10, :p11, :p12, :p13, :p14, :p15, :p16, :p17, :p18, :p19, :p20, :p21, :p22, :p23, :p24, :p25, :p26, :p27, :p28, :p29, :p30, :p31, :p32, :p33); SELECT "CreatedAt", "Id" FROM "StripMaps" WHERE sql%ROWCOUNT = 1 AND "CreatedAt" = SYSDATE AND "Id" = scope_identity(); Exception thrown: 'Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException' in System.Private.CoreLib.dll StripMap.Id = 0, CreatedAt = 0001/1/1 00:00:00 [2026-03-20T15:45:08 INF] Executed DbCommand (314ms) [Parameters=[:__p_0='?' (DbType = Int64), :__p_1='?' (DbType = DateTime2)], CommandType='Text', CommandTimeout='0'] SELECT TOP(1) "s"."Id", "s"."CreatedAt", "s"."Columns", "s"."CusLotId", "s"."CusWaferId", "s"."Customer", "s"."EqpModel", "s"."EqpName", "s"."ErrorDetail", "s"."ErrorMessage", "s"."HasProductRelation", "s"."HasWaferRelation", "s"."IsEdited", "s"."IsMerged", "s"."LastUpdateUserId", "s"."LotId", "s"."LotYield", "s"."OriginLocation", "s"."PackageName", "s"."PassCount", "s"."Product", "s"."RawData", "s"."Rows", "s"."SpreadLotId", "s"."SpreadLotYield", "s"."StepName", "s"."StripAxesInfo", "s"."StripDataType", "s"."StripId", "s"."StripReUploadStatusType", "s"."StripSourceType", "s"."StripStatusType", "s"."SubstrateSide", "s"."TotalCount", "s"."UpdatedAt", "s"."Yield" FROM "StripMaps" AS "s" WHERE "s"."Id" = :__p_0 AND "s"."CreatedAt" = :__p_1 DB values is null: True [2026-03-20T15:45:08 INF] Executing ObjectResult, writing value of type 'RunanMms.Schema.ObjectSchema`1[[System.Nullable`1[[System.Boolean, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. [2026-03-20T15:45:08 INF] Response: StatusCode: 200 Content-Type: application/json; charset=utf-8 [2026-03-20T15:45:08 INF] Executed action RunanMms.Controllers.Mes.UploadStripMapController.UploadStripMap (RunanMms) in 3197.0962ms
回答 0
暂无回答
扫一扫
联系客服