You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
EF version: [EF Core v8.0.10]
EF Plus version: [EF Plus Core v8.103.4]
Database Server version: [Azure SQL Server]
Database Provider version (NuGet): [Microsoft.Data.SqlClient v5.1.2]
The text was updated successfully, but these errors were encountered:
bengavin
changed the title
BulkMergeAsync ignores columns with duplicate values in generated INSERT
BulkMergeAsync ignores columns with default values in generated INSERT
Nov 6, 2024
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.
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?
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
The text was updated successfully, but these errors were encountered: