This library adds basic support for "Upsert" operations to EF Core.
Uses INSERT … ON CONFLICT DO UPDATE
in PostgreSQL/Sqlite, MERGE
in SqlServer & Oracle and INSERT INTO … ON DUPLICATE KEY UPDATE
in MySQL.
Also supports injecting sql command runners to add support for other providers
A typical upsert command could look something like this:
DataContext.DailyVisits
.Upsert(new DailyVisit
{
UserID = userID,
Date = DateTime.UtcNow.Date,
Visits = 1,
})
.On(v => new { v.UserID, v.Date })
.WhenMatched(v => new DailyVisit
{
Visits = v.Visits + 1,
})
.RunAsync();
In this case, the upsert command will ensure that a new DailyVisit
will be added to the database. If a visit with the same UserID
and Date
already exists, it will be updated by incrementing it's Visits
value by 1.
Please read our Usage page for more examples