public async Task SequenceInsert() { var id = await GetServerVersion() >= new Version(4, 0, 0, 0) ? 30 : 31; await using (var db = await GetDbContext <SequenceInsertContext>()) { await db.Database.ExecuteSqlRawAsync("create table test_insert_sequence (id int primary key, name varchar(20))"); await db.Database.ExecuteSqlRawAsync("create sequence seq_test_insert_sequence"); await db.Database.ExecuteSqlRawAsync("alter sequence seq_test_insert_sequence restart with 30"); await db.Database.ExecuteSqlRawAsync("create trigger test_insert_sequence_id before insert on test_insert_sequence as begin if (new.id is null) then begin new.id = next value for seq_test_insert_sequence; end end"); var entity = new SequenceInsertEntity() { Name = "foobar" }; await db.AddAsync(entity); await db.SaveChangesAsync(); Assert.AreEqual(id, entity.Id); } }
public void SequenceInsert() { using (var db = GetDbContext <SequenceInsertContext>()) { db.Database.ExecuteSqlRaw("create table test_insert_sequence (id int primary key, name varchar(20))"); db.Database.ExecuteSqlRaw("create sequence seq_test_insert_sequence"); db.Database.ExecuteSqlRaw("alter sequence seq_test_insert_sequence restart with 30"); db.Database.ExecuteSqlRaw("create trigger test_insert_sequence_id before insert on test_insert_sequence as begin if (new.id is null) then begin new.id = next value for seq_test_insert_sequence; end end"); var entity = new SequenceInsertEntity() { Name = "foobar" }; db.Add(entity); db.SaveChanges(); Assert.AreEqual(31, entity.Id); } }