tmsmith / Dapper-Extensions

Dapper Extensions is a small library that complements Dapper by adding basic CRUD operations (Get, Insert, Update, Delete) for your POCOs. For more advanced querying scenarios, Dapper Extensions provides a predicate system. The goal of this library is to keep your POCOs pure by not requiring any attributes or base class inheritance.
1.79k stars 586 forks source link

Get by key value is broken, must use Get by object #315

Open kspdrgn opened 1 year ago

kspdrgn commented 1 year ago

Sorry if this is a duplicate. Maybe this will help other developers running into this issue.

Using Get as the documentation suggests Get(id) doesn't work, it doesn't generate any predicate. Must use Get(new { id }) syntax.

This bug may affect all providers, I have only tested SQL Server.

The predicate is not filled out when using Get(value) but they work when using Get(object). I noticed that in DapperImplementor.GetMapAndPredicate, GetKeyPredicate is only called for Update and Delete, not Get.

Workaround for developers is to use Get(new {}) syntax.

Workaround for Dapper-Extensions may be to fix the documentation to say Get(new { id }) instead of Get(id).

See pull request with a corrected test case that shows Get is failing