public void updateSchemaIfNeeded() { //db context var dbc = this.newContext(); //fields meta_name = stringColumn("name", 150); meta_value = (IntColumn)intColumn("value").allowNull(); meta_text = (StringColumn)stringColumn("text", 150).allowNull(); //table tbl_meta= this.newTable("ds_meta", meta_name, meta_value, meta_text); //create if not exists dbc.create(tbl_meta); //look version int ver = currentVersion(dbc); if (ver == -1) { // insert version row dbc.insertInto(tbl_meta).Values(meta_name.value("schema version"), meta_value.value(0)) .execute(); // ver = 0; } // for (int i = ver; i < schemaUpdates.Count; i++) { schemaUpdates[i].apply(this, dbc); } setSchemaVersion(schemaUpdates.Count, dbc); //commit dbc.SubmitChanges(); }
internal void setSchemaVersion(int version, DbContext dbc) { dbc.update(tbl_meta).Set(meta_value.value(version)).where(meta_name.equal("schema version")) .execute(); }