Skip to content

Make a PR for Dapper allowing InsertReturn to modify an existing object with inserted keys #4

@t00

Description

@t00

Currently INSERT identifiers are returned a part of Query or specifically QuerySingleOrDefaultAsync:

var productToInsert = new Product { Name = "product" };
var newProductKeys = connection.InsertReturnAsync(productToInsert);
Assert.AreNotEqual(productToInsert, newProductKeys);
Assert.IsTrue(productToInsert.Id == 0);
product.Id = newProductKeys.Id;
Assert.IsTrue(productToInsert.Id > 0);

Dapper should allow an additional flag which will trigger updating params object's properties:

var dapperParams = new Product();
var dapperFlags = CommandFlags.UpdateParams;
connection.QuerySingleOrDefaultAsync(sql, dapperParams, new CommandDefinition(..., dapperFlags, ...));
Assert.IsTrue(dapperParams.Id > 0);

This will prevent creating an empty object with only keys filled in:

var productToInsert = new Product { Name = "product" };
connection.InsertReturnKeysAsync(productToInsert);
Assert.IsTrue(productToInsert.Id > 0);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions