Dapper: Field 'Id' doesn't have a default value when use InsertAsync or UpdateAsync

Created on 12 Oct 2018  路  2Comments  路  Source: StackExchange/Dapper

[ExplicitKey] is used but get error "Field 'Id' doesn't have a default value" when use InsertAsync or UpdateAsync

Most helpful comment

I believe the problem you are is related to a series of open issues related to InsertAsync(), UpdateAsync, and DeleteAsync() corrupting an internal cache of types and their attributes. I have seen various issues that happen intermittently when using the previously mentioned async methods.

I was able to resolve them by switching to the synchronous versions of the methods, which is not ideal because now I have synchronous blocking code running inside of async methods which run on the thread pool -- a recipe for thread starvation.

Here are the issues that appear to be related:
https://github.com/StackExchange/Dapper/issues/793
https://github.com/StackExchange/Dapper/issues/1027
https://github.com/StackExchange/Dapper/issues/1076
https://github.com/StackExchange/Dapper/issues/1139

These issues could use some love. I have a hard time recommending using Dapper to friends and coworkers for a new project at this point due to the behavior of these async methods.

All 2 comments

Same problem for me. In my case this issue only appears if a previous Update or Delete is invoked.

I've tracked this issue down to the lines 441 and 505 where the ExplicitKeyProperties are added to the KeyProperties-List.

I think the ExplicitKeyProperties should be rather concated with KeyProperties rather than added.
Any thoughts about this?

I believe the problem you are is related to a series of open issues related to InsertAsync(), UpdateAsync, and DeleteAsync() corrupting an internal cache of types and their attributes. I have seen various issues that happen intermittently when using the previously mentioned async methods.

I was able to resolve them by switching to the synchronous versions of the methods, which is not ideal because now I have synchronous blocking code running inside of async methods which run on the thread pool -- a recipe for thread starvation.

Here are the issues that appear to be related:
https://github.com/StackExchange/Dapper/issues/793
https://github.com/StackExchange/Dapper/issues/1027
https://github.com/StackExchange/Dapper/issues/1076
https://github.com/StackExchange/Dapper/issues/1139

These issues could use some love. I have a hard time recommending using Dapper to friends and coworkers for a new project at this point due to the behavior of these async methods.

Was this page helpful?
0 / 5 - 0 ratings