Open bengavin opened 2 weeks ago
Hello @bengavin ,
That's currently the default behavior. Properties with default values are always ignored by default.
However, you can choose which behavior you want with the option ExplicitValueResolutionMode
By using this following options options.ExplicitValueResolutionMode = Z.EntityFramework.Extensions.ExplicitValueResolutionMode.AlwaysKeepValueOnInsert;
now values will always be inserted in the Insert
part of the BulkMerge
You can see an online example using this option here
At this moment, only the BulkInsert supports hybrid cases when some entities have value explicitly set and some don't through the SmartDefaultValueOnBulkInsert
and SmartPartialResolutionOnBulkInsert
mode.
Let me know if that answer correctly to your question.
Best Regards,
Jon
Hello @bengavin,
Since our last conversation, we haven't heard from you.
Let me know if you have any questions.
Best regards, Jon
Thanks @JonathanMagnan - that gets us around the current issue for the moment, is there a plan to implement the smart defaults approach in the merge operation so it functions like the bulk insert?
Hello @bengavin ,
I will talk with my employees next Monday to evaluate the difficulty.
Best Regards,
Jon
1. Description
When generating the MERGE statement, columns which have an EFCore fluent configured default value are ignored when generating the INSERT portion of the SQL statement. They are included in the staging table and in the UPDATE portion of the statement.
2. Exception
N/A
3. Fiddle or Project
Not available at this time, I may have time to put one together later.
4. Any further technical details
Removing the 'HasDefaultValue(...)' configuration on the properties restores the expected behavior. I would expect that, if a database default value was to be returned, it would only be used/returned in the case where the source property on the entity being saved was NULL.
NOTE: This behavior does -not- happen when using BulkSaveChangesAsync
Further technical details