Closed g-lashuk closed 6 months ago
Hello @g-lashuk ,
I will first recommend you to add an index on the id
and tenantid
columns if you don't already have one. Something looks wrong if the SELECT
part takes that much time.
As for disabling the output, I'm unsure exactly why our library is currently outputting all values. One cause could be if you have the audit feature enabled? Otherwise, could you show us how you did your mapping and how you call the bulk update (we are most interested in which options you have enabled) so we will be able to let you know which options are currently causing our library's output values?
Best Regards,
Jon
Yes, the audit will enable the output of all values before and after the update is performed.
Your table also probably contains a trigger or something like this, which doesn't allow us to output those values directly (so we have to use a temporary table and then make a JOIN after).
Best Regards,
Jon
Is there any setting to exclude columns from auditing? For example if I have a model with properties: Prop1
Prop2
and table with columns Prop1
Prop2
Prop3
. As far as I see even if I've configured mapping only for Prop1
and Prop2
. Prop3
is also selected after merge into statement.
P.S you can see that even in my example, Payload
is not presented in my DTO.
I'm asking because some of the columns (Payload
in particular) contains a lot of data. But we updating only update_date
hash
and revision
via the model without Payload
, but anyway it's selected after the merge and leads to perf decrease.
Hello @g-lashuk ,
Sure, you can choose properties to exclude:
DapperPlusManager.Entity<EntitySimple>().Table("EntitySimples")
.Identity(x => x.ID)
.Map(x => x.ColumnString)
.Map(x => x.ColumnInt, "ColumnInt")
.AuditMode(x => x.ColumnString, ColumnMappingAuditModeType.Exclude)
or properties to include (you exclude them all at first):
DapperPlusManager.Entity<EntitySimple>().Table("EntitySimples")
.Identity(x => x.ID)
.Map(x => x.ColumnString)
.Map(x => x.ColumnInt, "ColumnInt")
.AuditMode(AuditModeType.ExcludeAll)
.AuditMode(x => x.ColumnInt, ColumnMappingAuditModeType.Include)
.AuditMode(x => x.IDPatate, ColumnMappingAuditModeType.Include);
So, in your case, it is probably to exclude them all and include only those you want as, by default, we select everything.
Let me know if that answers your question correctly.
Best Regards,
Jon
Cool, currently I'm on vacation. But some of my colleagues will check it next week and resolve the issue if it helps. Thank you!
Hello @g-lashuk ,
Since our last conversation, we haven't heard from you.
Were you able to solve your issue?
Don't hesitate to contact us if you need further assistance.
Best regards,
Jon
Hello @JonathanMagnan, yes we've managed to resolve our issue.
Thanks for the help!
Description
I have a problem with
BulkUpdate
method. According to logs from sql profiler the generated sql includes theselect
statement aftermerge into
, which takes half of the time of the whole query. Is there any setting to disable that?Exception
If you are seeing an exception, include the full exceptions details (message and stack trace).
Fiddle or Project (Optional)
If you are able,
Provide a Fiddle that reproduces the issue: https://dotnetfiddle.net/kV5RHX
Or provide a project/solution that we can run to reproduce the issue.
Otherwise, make sure to include as much information as possible to help our team to reproduce the issue.
Note: More information you provide, faster we can implement a solution.
Further technical details