示例#1
0
        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);
            }
        }
示例#2
0
 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);
     }
 }