/// <summary> /// Model集合转为Json字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="modelList"></param> /// <param name="format"></param> /// <returns></returns> public static string ToJson <T>(this IEnumerable <T> modelList, NFinal.Json.DateTimeFormat format = Json.DateTimeFormat.LocalTimeNumber) { if (modelList == null) { return("null"); } else { NFinal.IO.StringWriter sw = new NFinal.IO.StringWriter(); NFinal.Json.GetJsonDelegate <T> dele = null; sw.Write("["); foreach (T model in modelList) { if (dele == null) { dele = (NFinal.Json.GetJsonDelegate <T>)NFinal.Json.JsonHelper.GetDelegate(model, format); } else { sw.Write(","); } dele(model, sw, format); } sw.Write("]"); return(sw.ToString()); } }
/// <summary> /// Model转为Json字符串 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="model"></param> /// <param name="format"></param> /// <returns></returns> public static string ToJson <T>(this T model, NFinal.Json.DateTimeFormat format = Json.DateTimeFormat.LocalTimeNumber) { NFinal.IO.StringWriter sw = new NFinal.IO.StringWriter(); NFinal.Json.GetJsonDelegate <T> dele = (NFinal.Json.GetJsonDelegate <T>)NFinal.Json.JsonHelper.GetDelegate(model, format); dele(model, sw, format); return(sw.ToString()); }
public SqlDocument(string filePath, string nameSpace, string sqlContent) { SqlDocument.nameSpace = nameSpace; string fileDirectory = Path.GetDirectoryName(filePath); if (!Directory.Exists(fileDirectory)) { Directory.CreateDirectory(fileDirectory); } string fileName; NFinal.IO.StringWriter sw = null; ModelFileData modelData; System.Data.IDbConnection con = null; #region 读取配置 Regex commentRegex = new Regex(@"/\*(.*?)\*/", RegexOptions.Singleline); Match commentMatch = commentRegex.Match(sqlContent); if (commentMatch.Success && commentMatch.Groups[1].Success) { string commentContent = commentMatch.Groups[1].Value; Regex varRegex = new Regex(@"set\s+@([_a-zA-Z0-9]+)=('.*?'|.*?)(\r|\n)*", RegexOptions.Singleline | RegexOptions.IgnoreCase); MatchCollection varMac = varRegex.Matches(commentContent); string key = null; string value = null; foreach (Match varMat in varMac) { if (varMat.Success) { key = varMat.Groups[1].Value; value = varMat.Groups[2].Value.Trim().Trim('\''); if (!string.IsNullOrEmpty(key)) { if (key == "useStruct") { if (value == "true" || value == "1") { useStruct = true; } } else if (key == "name") { this.name = value; } else if (key == "connectionString") { this.connectionString = value; } else if (key == "providerName") { this.providerName = value; } } } } } #endregion Data.DataUtility dataUtility = null; if (!string.IsNullOrEmpty(this.name) && !string.IsNullOrEmpty(this.connectionString) && !string.IsNullOrEmpty(this.providerName)) { if (this.providerName.ToLower().IndexOf("mysql") > -1) { con = new MySql.Data.MySqlClient.MySqlConnection(connectionString); dataUtility = new Data.MySqlDataUtility(con); } else if (this.providerName.ToLower().IndexOf("sqlite") > -1) { con = new System.Data.SQLite.SQLiteConnection(connectionString); dataUtility = new Data.SQLiteDataUtility(con); } else if (this.providerName.ToLower().IndexOf("sqlclient") > -1) { con = new System.Data.SqlClient.SqlConnection(connectionString); dataUtility = new Data.SqlServerDataUtility(con); } else if (this.providerName.ToLower().IndexOf("Oracle") > -1) { con = new Oracle.ManagedDataAccess.Client.OracleConnection(connectionString); dataUtility = new Data.OracleDataUtility(con); } else if (this.providerName.ToLower().IndexOf("Npgsql") > -1) { con = new Npgsql.NpgsqlConnection(connectionString); dataUtility = new Data.PostgreSqlDataUtility(con); } dataUtility.Open(); var tableDataList = dataUtility.GetDefaultTableData(); if (dataUtility != null) { //dataUtility.SetTableColumnData(tableDataList); foreach (var tableData in tableDataList) { fileName = Path.Combine(fileDirectory, tableData.Name + ".cs"); if (!File.Exists(fileName)) { modelData = new ModelFileData(); modelData.name = tableData.Name; modelData.nameSpace = nameSpace; modelData.isDefaultTable = true; dataUtility.SetTableColumnData(tableData); sw = new NFinal.IO.StringWriter(); ModelTemplate.Render(sw, tableData); modelData.content = sw.ToString(); modelData.fileName = fileName; modelFileDataList.Add(modelData); } } } } sqlContent = sqlContent.Substring(commentMatch.Length); StringReader reader = new StringReader(sqlContent); bool isEnd = false; string line = null; string name = null; string sql = null; while (!isEnd) { line = reader.ReadLine(); if (line == null) { if (!string.IsNullOrEmpty(name)) { sqlList.Add(name, sql); } break; } if (line.StartsWith("--")) { if (!string.IsNullOrEmpty(name)) { sqlList.Add(name, sql); } name = line.Substring(2).Trim(); sql = null; } else { sql += line; } } foreach (var sqlData in sqlList) { fileName = Path.Combine(fileDirectory, sqlData.Key + ".cs"); if (!File.Exists(fileName)) { modelData = new ModelFileData(); modelData.fileName = fileName; modelData.name = sqlData.Key; modelData.sql = sqlData.Value; modelData.nameSpace = nameSpace; modelData.isDefaultTable = false; Data.TableData tableData = new Data.TableData(modelData.name, modelData.sql); dataUtility.SetTableColumnData(tableData); sw = new NFinal.IO.StringWriter(); ModelTemplate.Render(sw, tableData); modelData.content = sw.ToString(); modelFileDataList.Add(modelData); } } dataUtility.Close(); }