{"record":{"id":"7d2738fd52261036","repo":"dotnet/efcore","slug":"the-property-entitytype-property-is-mapped-t-7d2738","errorCode":null,"errorMessage":"The property '{entityType}.{property}' is mapped to a result column of the stored procedure '{sproc}', but store-generated values are not supported for Delete stored procedures.","messagePattern":"The property '(.+?)\\.(.+?)' is mapped to a result column of the stored procedure '(.+?)', but store-generated values are not supported for Delete stored procedures\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/EFCore.Relational/Infrastructure/RelationalModelValidator.cs","lineNumber":689,"sourceCode":"            if (resultColumn.PropertyName == null)\n            {\n                continue;\n            }\n\n            switch (storeObjectIdentifier.StoreObjectType)\n            {\n                case StoreObjectType.InsertStoredProcedure:\n                case StoreObjectType.UpdateStoredProcedure:\n                    if (!storeGeneratedProperties.ContainsKey(property.Name))\n                    {\n                        throw new InvalidOperationException(\n                            RelationalStrings.StoredProcedureResultColumnNotGenerated(\n                                entityType.DisplayName(), resultColumn.PropertyName, storeObjectIdentifier.DisplayName()));\n                    }\n\n                    break;\n                case StoreObjectType.DeleteStoredProcedure:\n                    throw new InvalidOperationException(\n                        RelationalStrings.StoredProcedureResultColumnDelete(\n                            entityType.DisplayName(), resultColumn.PropertyName, storeObjectIdentifier.DisplayName()));\n                default:\n                    Check.DebugFail(\"Unexpected stored procedure type: \" + storeObjectIdentifier.StoreObjectType);\n                    break;\n            }\n        }\n\n        var originalValueProperties = new Dictionary<string, IProperty>(properties);\n        var parameterNames = new HashSet<string>();\n        foreach (var parameter in sproc.Parameters)\n        {\n            IProperty? property = null;\n            if (parameter.PropertyName != null)\n            {\n                if (parameter.ForOriginalValue == true)\n                {\n                    if (!originalValueProperties.TryGetAndRemove(parameter.PropertyName, out property))","sourceCodeStart":671,"sourceCodeEnd":707,"githubUrl":"https://github.com/dotnet/efcore/blob/dbf9771522148d61a2467854921bd5dc6f6e6916/src/EFCore.Relational/Infrastructure/RelationalModelValidator.cs#L671-L707","documentation":"Thrown when any result column is configured on a Delete stored procedure. Deletes do not return store-generated values, so result columns are unsupported on delete sprocs; the validator unconditionally rejects any result column whose PropertyName is non-null on a delete sproc.","triggerScenarios":".DeleteStoredProcedure().HasResultColumn(...); reusing an insert/update builder pattern on a delete sproc.","commonSituations":"Copy-pasting result-column config from an insert sproc onto a delete sproc.","solutions":["Remove all HasResultColumn calls from the delete stored procedure."],"exampleFix":"// before\n.DeleteStoredProcedure(\"sp_DeleteBlog\", sp =>\n{\n    sp.HasResultColumn(\"Id\");\n});\n\n// after\n.DeleteStoredProcedure(\"sp_DeleteBlog\", sp => { });","handlingStrategy":"validation","validationCode":"foreach (var et in modelBuilder.Model.GetEntityTypes())\n{\n    var del = et.GetDeleteStoredProcedure();\n    if (del != null && del.ResultColumns.Any(r => r.PropertyName != null))\n        throw new InvalidOperationException($\"{et.DisplayName()} delete sproc has result columns\");\n}","typeGuard":null,"tryCatchPattern":"try { _ = ctx.Model; } catch (InvalidOperationException ex) when (ex.Message.Contains(\"not supported for Delete stored procedures\")) { /* remove result columns from the delete sproc */ }","preventionTips":["Never call HasResultColumn on a delete stored procedure.","Review sproc builders per operation type rather than copy-pasting across insert/update/delete."],"tags":["ef-core","stored-procedures","result-column","delete","model-validation"],"analyzedSha":"dbf9771522148d61a2467854921bd5dc6f6e6916","analyzedAt":"2026-08-06T20:46:03.226Z","schemaVersion":2},"datasetVersion":"2026-08-07T03:17:09.362Z"}