Support main procedure result via ProcedureResultAttribute

This commit is contained in:
2026-02-27 16:21:42 +01:00
parent 6ebda34a04
commit 9ce10273f1
5 changed files with 219 additions and 33 deletions

View File

@@ -46,6 +46,21 @@ namespace DynamORM.Tests.Helpers
public int Status { get; set; }
}
public class ProcedureParameterAttributeMainResult
{
[ProcedureResult]
public int MainResult { get; set; }
[DynamORM.Mapper.Column("status")]
public int Status { get; set; }
}
public class ProcedureParameterAttributeMainResultField
{
[ProcedureResult(-1)]
public int MainResult;
}
public class ProcedureMultiResult : IProcedureResultReader
{
[DynamORM.Mapper.Column("sp_Multi")]

View File

@@ -143,6 +143,36 @@ namespace DynamORM.Tests.Procedure
Assert.AreEqual(3, result.Status);
}
[Test]
public void TestDeclaredResultPayloadBindingSupportsProcedureResultMainResultProperty()
{
var result = DynamicProcedureResultBinder.BindPayload(
typeof(ProcedureParameterAttributeMainResult),
"sp_Test",
27,
new System.Collections.Generic.Dictionary<string, object>
{
{ "status", 6 }
}) as ProcedureParameterAttributeMainResult;
Assert.NotNull(result);
Assert.AreEqual(27, result.MainResult);
Assert.AreEqual(6, result.Status);
}
[Test]
public void TestDeclaredResultPayloadBindingSupportsProcedureResultMainResultField()
{
var result = DynamicProcedureResultBinder.BindPayload(
typeof(ProcedureParameterAttributeMainResultField),
"sp_Test",
33,
null) as ProcedureParameterAttributeMainResultField;
Assert.NotNull(result);
Assert.AreEqual(33, result.MainResult);
}
[Test]
public void TestDeclaredResultReaderCanConsumeMultipleResultSets()
{