/// <summary> /// 获取所有数据模型的信息(从代码) /// </summary> /// <returns></returns> private List <IModelInfo> GetModelInfos() { var result = new List <IModelInfo>(); foreach (var model in storeModel.EntityTypes) { var i = new IModelInfo(); var ps = new List <IModelProperties>(); i.Name = model.Name; i.Properties = ps; //属性获取 foreach (var p in model.Properties) { ps.Add(new IModelProperties() { Name = p.Name, PK = p.IsStoreGeneratedIdentity, Type = p.TypeName == "int" && p.IsStoreGeneratedIdentity ? "INTEGER" : p.TypeName }); } result.Add(i); } return(result); }
/// <summary> /// 获取所有数据模型的信息(从数据库) /// </summary> /// <returns></returns> private List <IModelInfo> GetModelInfosForDb() { var result = new List <IModelInfo>(); using (var con = new SQLiteConnection(connstr)) { con.Open(); using (var cmd = new SQLiteCommand(con)) { cmd.CommandText = "select name from sqlite_master where type='table' order by name"; using (var rd = cmd.ExecuteReader()) { while (rd.Read()) { var modelInfo = new IModelInfo(); modelInfo.Name = rd["name"].ToString().Substring(0, rd["name"].ToString().Length - 1); modelInfo.Properties = GetModelProperties(modelInfo.TableName); result.Add(modelInfo); } } } } return(result); }
/// <summary> /// 生成创建表SQL语句 /// </summary> /// <param name="model">模型信息</param> /// <returns></returns> private string GetCreateTableSQL(IModelInfo model) { string sql = $"CREATE TABLE \"{model.TableName}\" ("; foreach (var p in model.Properties) { string add = p.PK ? $"{p.Type} PRIMARY KEY" : p.Type + (p.NotNull ? " NOT NULL" : ""); string addChar = p == model.Properties[0] ? "" : ","; sql += $"{addChar}[{p.Name}] {add}"; } sql += ")"; return(sql); }