private static IdentityCreatorEntity GetCurrentSeed(string key, string dimension, Database db, DbTransaction trans) { var sql = string.Format("SELECT * FROM identity_creator WITH (HOLDLOCK, UPDLOCK) WHERE identity_key=@p_key and dimension=@p_dimension", COLUMNS); var dc = db.GetSqlStringCommand(sql); db.AddInParameter(dc, "p_key", DbType.String, key); db.AddInParameter(dc, "p_dimension", DbType.String, dimension); using (var reader = db.ExecuteReader(dc, trans)) { if (reader.Read()) { var entity = new IdentityCreatorEntity(); entity.Init(reader); return(entity); } } return(Create(key, dimension, db, trans)); }
private static IdentityCreatorEntity Create(string key, string dimension, Database db, DbTransaction trans) { var entity = new IdentityCreatorEntity { IdentityKey = key, Dimension = dimension, Seed = 1, Step = 1 }; var sql = string.Format("insert into identity_creator({0}) values(@p_identity_key,@p_dimension,@p_seed,@p_step)", COLUMNS); var dc = db.GetSqlStringCommand(sql); db.AddInParameter(dc, "p_identity_key", DbType.String, entity.IdentityKey); db.AddInParameter(dc, "p_dimension", DbType.String, entity.Dimension); db.AddInParameter(dc, "p_seed", DbType.String, entity.Seed); db.AddInParameter(dc, "p_step", DbType.String, entity.Step); db.ExecuteNonQuery(dc, trans); return(entity); }