NFinal学习笔记03--代码生成器-创新互联
NFinal代码生成器与其他的代码生成器不太一样,只需要运行模块下的WebComplier.aspx即可生成最终的web层代码。包括数据库的操作,Router类,
创新互联公司主要从事成都做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务莒县,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575调试文件等。附上一段代码与大家分享
using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Reflection; using System.Text; using System.Xml; using NFinal.Compile; //防止.net 2.0下类自动引入Linq命名空间报错. namespace System.Linq { delegate void None(); } namespace NFinal { public class Frame { public static string appRoot; public static string AssemblyTitle; public static ListConnectionStrings = new List (); public Frame(string appRoot) { Frame.appRoot = appRoot; string[] fileNames = Directory.GetFiles(appRoot, "*.csproj"); if (fileNames.Length > 0) { AssemblyTitle = Path.GetFileNameWithoutExtension(fileNames[0]); } else { string temp; temp = appRoot.Trim('\\'); AssemblyTitle = temp.Substring(temp.LastIndexOf('\\') + 1); } } /// /// 把基于网站根目录的绝对路径改为相对路径 /// /// ///public static string MapPath(string url) { return appRoot + url.Trim('/').Replace('/', '\\'); } public void GetDB() { //获取WebConfig中的连接字符串信息 string configFileName = appRoot + "Web.config"; if (File.Exists(configFileName)) { System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.Load(configFileName); System.Xml.XmlNode root = doc.DocumentElement.SelectSingleNode("/configuration"); System.Xml.XmlNodeList nodeList = root.SelectNodes("connectionStrings/add[@connectionString]"); Frame.ConnectionStrings.Clear(); if (nodeList.Count > 0) { System.Xml.XmlElement ele = null; foreach (System.Xml.XmlNode node in nodeList) { ele = node as System.Xml.XmlElement; var connectionString = new NFinal.DB.ConnectionString(); connectionString.name = ele.Attributes["name"].Value; connectionString.value = ele.Attributes["connectionString"].Value; connectionString.provider = ele.Attributes["providerName"].Value; if (connectionString.provider.ToLower().IndexOf("mysql") > -1) { connectionString.type = NFinal.DB.DBType.MySql; } else if (connectionString.provider.ToLower().IndexOf("sqlclient") > -1) { connectionString.type = NFinal.DB.DBType.SqlServer; } else if (connectionString.provider.ToLower().IndexOf("sqlite") > -1) { connectionString.type = NFinal.DB.DBType.Sqlite; } else if (connectionString.provider.ToLower().IndexOf("oracle") > -1) { connectionString.type = NFinal.DB.DBType.Oracle; } else { connectionString.type = NFinal.DB.DBType.Unknown; } Frame.ConnectionStrings.Add(connectionString); } } } //读取数据库信息 NFinal.DB.Coding.DataUtility dataUtility = null; if (Frame.ConnectionStrings.Count > 0) { NFinal.DB.ConnectionString conStr; NFinal.DB.Coding.DB.DbStore.Clear(); for (int i = 0; i < Frame.ConnectionStrings.Count; i++) { conStr = Frame.ConnectionStrings[i]; if (conStr.type == NFinal.DB.DBType.MySql) { dataUtility = new NFinal.DB.Coding.MySQLDataUtility(conStr.value); dataUtility.GetAllTables(dataUtility.con.Database); NFinal.DB.Coding.DB.DbStore.Add(conStr.name, dataUtility); } else if (conStr.type == NFinal.DB.DBType.Sqlite) { dataUtility = new NFinal.DB.Coding.SQLiteDataUtility(conStr.value); dataUtility.GetAllTables(dataUtility.con.Database); NFinal.DB.Coding.DB.DbStore.Add(conStr.name, dataUtility); } else if (conStr.type == NFinal.DB.DBType.SqlServer) { dataUtility = new NFinal.DB.Coding.SQLDataUtility(conStr.value); dataUtility.GetAllTables(dataUtility.con.Database); NFinal.DB.Coding.DB.DbStore.Add(conStr.name, dataUtility); } else if (conStr.type == NFinal.DB.DBType.Oracle) { #if NET2 #else dataUtility = new NFinal.DB.Coding.OracleDataUtility(conStr.value); dataUtility.GetAllTables(dataUtility.con.Database); NFinal.DB.Coding.DB.DbStore.Add(conStr.name, dataUtility); #endif } } } } /// /// 创建主路由 /// /// public void CreateMain(string[] apps) { VTemplate.Engine.TemplateDocument doc = null; doc=new VTemplate.Engine.TemplateDocument(MapPath("NFinal/Template/Main.tpl"), System.Text.Encoding.UTF8); doc.SetValue("project", NFinal.Frame.AssemblyTitle); doc.SetValue("apps", apps); doc.SetValue("ControllerSuffix", "Controller"); doc.RenderTo(MapPath("NFinal/Main.cs"), System.Text.Encoding.UTF8); } ////// 获取所有的应用模块 /// ///public string[] GetApps() { string webConfigFileName= MapPath("/Web.config"); XmlDocument doc = new XmlDocument(); doc.Load(webConfigFileName); XmlNode appsNode = doc.DocumentElement.SelectSingleNode("appSettings/add[@key='Apps']"); string[] Apps = null; if (appsNode != null && appsNode.Attributes.Count > 0 && appsNode.Attributes["value"] != null) { Apps = appsNode.Attributes["value"].Value.Split(','); } else { Apps =new string[] {"App"}; } return Apps; } } }
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
分享标题:NFinal学习笔记03--代码生成器-创新互联
文章链接:http://hbruida.cn/article/pdojd.html