Comments (5)
Hello @daniel-parra-issatec ,
To handle this scenario correctly, you need 2 options:
- AllowDuplicateKeys = true: Will only insert the last row that contains the same key (within the same batch)
- InsertIfNotExists = true: Will only insert if the data doesn't already exist in the database
Here is 2 examples:
// mapping options on the entity
DapperPlusManager.Entity("Patient_KeepIdentity")
.Table("Patients")
.Identity(x => x.patientId)
.UseBulkOptions(x =>
{
x.AllowDuplicateKeys = true;
x.InsertIfNotExists = true;
});
db.BulkInsert("Patient_KeepIdentity", patients);
// mapping option on the connection
connection.UseBulkOptions(x =>
{
x.AllowDuplicateKeys = true;
x.InsertIfNotExists = true;
}).BulkInsert("Patient_KeepIdentity", patients);
Let me know if that solves your issue correctly.
Best Regards,
Jon
from dapper-plus.
Hello @daniel-parra-issatec,
Since our last conversation, we haven't heard from you.
Were you able to solve your issue?
Let me know if you need more information.
Best regards,
Jon
from dapper-plus.
Hi,
Sorry for the late reply. I tried what you suggested on the connection but I keep getting the exception error. Maybe it's a database thing because there's already a record there with the same combination of identification number and document type (that's the unique index) and that's why it won't let me insert anything. It looks like the InsertIfNotExists option is having a conflict with the table's unique index.
Best regards,
Daniel.
from dapper-plus.
Hello @daniel-parra-issatec ,
So if I understand correctly, your key is currently the patientId
.
So, our library currently checks correctly if there is an existing row with the current parentId
or not. However, something a row with a parentId
that doesn't exist tries to be inserted in the database, and this insertion fails due to a unique index constraint on 2 other columns:
- IdentificationNumber
- DocumentType
If that's the case, is it for this particular BulkInsert
the parentId
the right key to use? If both your properties (IdentificationNumber and DocumentType) are always populated, would it be better to use this one as the key? Since this is a unique index, it also makes every row unique in the database.
If you still have the problem or that's not the right solution, do you think you could create a runnable project with the issue? It doesn’t need to be your project, just a new solution with the minimum code to reproduce the issue. It will allow us to better understand your scenario and provide the right solution.
Best Regards,
Jon
from dapper-plus.
Hi Jon,
Looks like I was finally able to solve it. You were right: the patientId shouldn't be the table identity for bulk insert and instead I used id number and document type by mapping all the table fields, then using .Key(x => new { x.id_numbre,x.documentType}).InsertIfNotExists(); I still left the AllowDuplicateKeys option on the connection. So it seems to be working now.
Thank you so much for your help.
Best regards,
Daniel.
from dapper-plus.
Related Issues (20)
- A transport-level error for NVarchar(max) column when using auditing HOT 7
- Received an invalid column length from the bcp client for colid HOT 3
- Set ColumnSynchronizeDeleteKeySubsetExpression without .Entity<Whatever>()? HOT 4
- IndexOutOfRangeException on BulkMerge operations HOT 1
- ILogger not logging, but Console.WriteLine works? HOT 3
- Configure Merge for concurrency handling HOT 3
- Ids not coming back after first BulkInsert HOT 4
- Update trigger on target table causes BulkMerge to fail HOT 3
- Feature Request - suppress update if nothing changed. HOT 2
- BulkInsert doesn't generate primary key for multiple concurrent submission HOT 7
- Support for Sybase for Bulk Insert HOT 1
- Avoid output HOT 7
- BulkInsert Postgres => An error occured while retrieving the InformationSchemaTable information. See the inner exception for details. HOT 4
- Dapper Plus can't map Id when use galera cluster HOT 3
- bulk insert very slow on mariadb version≥10.6.0 HOT 2
- PostgreSQL BulkMerge / BulkUpdate always returns all rows as update HOT 6
- Bulk Insert throws the exception 'Unknown data type' whenever inserting GUID to MySQL HOT 4
- Does this support DateOnly/TimeOnly? HOT 6
- Does this support Aot HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dapper-plus.