/* * /// <summary> * /// 解析外键列类型 * /// </summary> * private IEnumerator ParseForeignKeyColumnType() * { * foreach (var tableInfo in m_configDataTableInfoDic.Values) * { * foreach (var columnInfo in tableInfo.ColumnInfoList) * { * //遍历所有列定义,如果列名使用“."分割,说明是外键数据类型 * string typeStr = columnInfo.TypeStr; * if (typeStr.IndexOf(".") != -1) * { * string[] tuple = typeStr.Split(new char[] { '.' }); * if (tuple.Length != 2) * { * throw new Exception(string.Format("the column {0} at table {1} is a foreign key, but typeStr is not a tuple", columnInfo.ColumnName, tableInfo.TableName)); * } * string foreignTableName = tuple[0]; * string foreignColumnName = tuple[1]; * if (!m_configDataTableInfoDic.ContainsKey(foreignTableName)) * { * throw new Exception(string.Format("can't find the foreign table {0} for the column {1} at table {2} ", foreignTableName, columnInfo.ColumnName, tableInfo.TableName)); * } * var foreignTabelInfo = m_configDataTableInfoDic[foreignTableName]; * var foreignColumnInfo = foreignTabelInfo.GetColumnInfoByName(foreignColumnName); * if (foreignColumnInfo == null) * { * throw new Exception(string.Format("can't find the foreign column {0} for the column {1} at table {2}", foreignColumnName, columnInfo.ColumnName, tableInfo.TableName)); * } * //设置正确的typeStr * //columnInfo.RealTypeStr = foreignColumnInfo.TypeStr; * } * } * yield return null; * } * } */ /// <summary> /// 产生ConfigDataLoaderAutoGen.cs /// </summary> private void GenerateConfigDataLoaderAutoGenFile() { string outputFolder = PathHelper.GetFullPath(m_setting.m_autoGenCodeOutputPath); if (Directory.Exists(outputFolder)) { Directory.Delete(outputFolder, true); } Directory.CreateDirectory(outputFolder); var allConfigDataInfos = new List <ConfigDataTableInfo>(m_configDataTableInfoDic.Values); //产生ConfigDataLoaderAutoGen.cs,运行时读取功能 { string template = File.ReadAllText(PathHelper.GetFullPath(m_setting.m_codeTempletePath) + "/ConfigDataLoaderAutoGen.cs.txt"); string result = NVelocityHelper.Parse(template, "AllConfigDataInfos", allConfigDataInfos); File.WriteAllText(outputFolder + "/ConfigDataLoaderAutoGen.cs", result); } AssetDatabase.Refresh(); }