ASP.Net: EshineASPNet教程-自动生成代码模块

完整教程链接:ASP.Net: EshineASPNet-基于ASP.Net敏捷开发开源框架

本教程介绍一套自主开发的项目实现自动生成代码,以及使用codesmith自动生成代码。

首先要讲的是在一个项目里面,很多代码是有共性的,比如数据库表要对应类,增删改查的方法,这些都是公用的必须有的,做这个算没有创意的体力活,堆代码,这种就最适合用自动生成了。

然后是三层架构,这是一个比较老的话题了,也能搜到很多文章,因为这里用到了就提一下。数据库每一个表对应一个Model,对这个Model的数据库操作放进SQLServerDAL,接口提取到IDAL,最后就可以在上面封装业务逻辑成Bll了,这里也加了DALFactory这个用来预留个更换数据库的可能。那么一旦一个数据库表定义好以后,这几个类的代码其实都是可以初始化生成一次的,最后只是在Bll里面添加更多的函数就可以了。虽说老或者不好,也就是说有Linq更新的查询方式,和主要用于Webform而不是MVC。不过数据库执行效率是比Linq要高的,对sql的磨练是好的,对分层的理解是需要的。

本框架包含了一个Windows应用,在csswrap文件夹,用来实现根据数据表信息自动生成从Model到Bll的所有代码并保存文件至对应文件夹。懒人有懒方法,直接假设表的第一个字段是自增id,设成主键和标识。右击Sql Server数据库的表-编辑表脚本为(S)-CREAT到(C)-新建编辑器窗口,复制从CREATE TABLE行到字段最后一行(即CONSTRAINT的上面一行),例如

CREATE TABLE [dbo].[province](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [code] [nvarchar](6) NULL,
    [name] [nvarchar](40) NULL,

这里就包含了表名,字段名和字段类型,我们根据这些信息自动生成对应的Model,DAL,Bll等。做到这一点其实就是用StringBuilder不断Append就好了。

        private void button2_Click(object sender, EventArgs e)
        {
            if(! getfolderpath()) return;

            //[customerName] [varchar](50) NULL,
            Regex r = new Regex(@"\[\w*\]");

            Match mch = Regex.Match(this.richTextBox3.Lines[0], @"dbo\]\.\[(?<tname>\w+)\]");
            string tname = mch.Groups["tname"].Value;//table name

            mch = Regex.Match(this.richTextBox3.Lines[1], @"\[(?<idname>\w+)\]");
            string idname=mch.Groups["idname"].Value;

            string s1, s2;
            StringBuilder sb1 = new StringBuilder();//model前部分
            StringBuilder sb2 = new StringBuilder();//model后部分
            StringBuilder sb3 = new StringBuilder();//sqlServerDal
            StringBuilder sb4 = new StringBuilder();//sqlServerDal
            StringBuilder sb5 = new StringBuilder();//sqlServerDal
            StringBuilder sb6 = new StringBuilder();//sqlServerDal
            StringBuilder sb7 = new StringBuilder();//interface
            StringBuilder sb8 = new StringBuilder();//bll
            StringBuilder sb9 = new StringBuilder();//sqlServerDal
            StringBuilder sb10 = new StringBuilder();//DALFactory

            sb1.Append("using System;\n\n");
            sb1.Append("namespace Model\n{\n");
            sb1.Append("public class " + tname + "\n{\n");
            sb1.Append("private int _" + idname + " = 0;\n");
            sb2.Append("public int " + idname + "{get { return _" + idname + "; }\n\tset { _" + idname + " = value; }}\n\n");

            sb3.Append("using System;\n");
            sb3.Append("using System.Text;\n");
            sb3.Append("using System.Data;\n\n");
            sb3.Append("namespace SQLServerDAL\n{\n");
            sb3.Append("public class sql_" + tname + ":IDAL." + tname + "Dal\n{\n");
            sb3.Append("DBunit.SQLAccess sql = new DBunit.SQLAccess();\n");
            sb3.Append("DateTime baddate = DateTime.Parse(\"1900-01-01\");\n");
            sb3.Append("public int Add(Model."+tname+" "+tname+")\n{\n");
            sb3.Append("StringBuilder strsql = new StringBuilder();\n");
            sb3.Append("strsql.Append(\"insert into " + tname + " values (\");\n");

            sb4.Append("public Model." + tname + " get" + tname + "(DataTable dt)\n{\n");
            sb4.Append("Model." + tname + " " + tname + " = new Model." + tname + "();\n");
            sb4.Append(tname + "." + idname + " = int.Parse( dt.Rows[0][\"" + idname + "\"].ToString());\n");

            sb7.Append("using System.Data;\n\n");
            sb7.Append("namespace IDAL\n{\n");
            sb7.Append("public interface " + tname + "Dal\n{\n");
            sb7.Append("int Add(Model." + tname + " " + tname + ");\n");


            sb8.Append("using System.Data;\n\n");
            sb8.Append("namespace Bll\n{\n");
            sb8.Append("public class " + tname + "Bll\n{\n");
            sb8.Append("IDAL." + tname + "Dal itu = DALFactory." + tname + "_Factory.Createusers();\n");
            sb8.Append("public int Add(Model." + tname + " " + tname + ")\n{\n");
            sb8.Append("return itu.Add(" + tname + ");\n}\n");


            sb9.Append("public Model." + tname + " get" + tname + "(int id)\n{\n");
            sb9.Append("StringBuilder strsql = new StringBuilder();\n");
            sb9.Append("strsql.Append(\"select * from " + tname + " where \");\n");
            sb9.Append("strsql.AppendFormat(\"" + idname + "='{0}'\", id);\n");
            sb9.Append("DataTable dt = sql.ExecuteDataSet(strsql.ToString()).Tables[0];\n");
            sb9.Append("if (dt.Rows.Count < 1) return null;\n\n");
            sb9.Append("return get" + tname + "(dt);\n}\n");

            sb7.Append("Model." + tname + " get" + tname + "(int id);\n");
            sb7.Append("Model." + tname + " get" + tname + "(DataTable dt);\n");
            sb8.Append("public Model." + tname + " get" + tname + "(int id)\n{\n");
            sb8.Append("return itu.get" + tname + "(id);\n}\n");
            sb8.Append("public Model." + tname + " get" + tname + "(DataTable dt)\n{\n");
            sb8.Append("return itu.get" + tname + "(dt);\n}\n");

            sb5.Append("public int update(Model." + tname + " " + tname + ")\n{\n");
            sb5.Append("StringBuilder strsql = new StringBuilder();\n");
            sb5.Append("strsql.Append(\"update " + tname + " set \");\n");
            sb7.Append("int update(Model." + tname + " " + tname + ");\n");
            sb8.Append("public int update(Model." + tname + " " + tname + ")\n{\n");
            sb8.Append("return itu.update(" + tname + ");\n}\n");

            sb10.Append("using System.Reflection;\n\n");
            sb10.Append("namespace DALFactory\n{\n");
            sb10.Append("public class " + tname + "_Factory\n{\n");
            sb10.Append("static readonly string path = System.Configuration.ConfigurationManager.AppSettings[\"DAL\"];\n");
            sb10.Append("public static IDAL." + tname + "Dal Createusers()\n{\n");
            sb10.Append("string classname = path + \".sql_" + tname + "\";\n");
            sb10.Append("return (IDAL." + tname + "Dal)Assembly.Load(path).CreateInstance(classname);\n}\n");
            sb10.Append("}\n}");

            for (int i = 2; i < this.richTextBox3.Lines.Length; i++)//0行是表名,1行是id
            {
                if (this.richTextBox3.Lines[i].Contains("] ["))
                {
                    s1 = r.Matches(this.richTextBox3.Lines[i])[0].ToString();
                    s1 = s1.Substring(1, s1.Length - 2);
                    s2 = r.Matches(this.richTextBox3.Lines[i])[1].ToString();
                    s2 = s2.Substring(1, s2.Length - 2);

                    switch (s2)
                    {
                        case "varchar": sb1.Append("private string _" + s1 + " = \"\";\n");
                            sb2.Append("public string " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"'{0}',\", " + tname + "." + s1 + ");\n");
                            sb4.Append(tname + "." + s1 + " = dt.Rows[0][\"" + s1 + "\"].ToString();\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " ='{0}',\", " + tname + "." + s1 + ");\n");
                            break;
                        case "nvarchar": sb1.Append("private string _" + s1 + " = \"\";\n");
                            sb2.Append("public string " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"N'{0}',\", " + tname + "." + s1 + ");\n");
                            sb4.Append(tname + "." + s1 + " = dt.Rows[0][\"" + s1 + "\"].ToString();\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " =N'{0}',\", " + tname + "." + s1 + ");\n");
                            break;
                        case "text": sb1.Append("private string _" + s1 + " = \"\";\n");
                            sb2.Append("public string " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"'{0}',\", " + tname + "." + s1 + ");\n");
                            sb4.Append(tname + "." + s1 + " = dt.Rows[0][\"" + s1 + "\"].ToString();\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " ='{0}',\", " + tname + "." + s1 + ");\n");
                            break;
                        case "datetime": sb1.Append("private DateTime _" + s1 + "= DateTime.Parse(\"1900-01-01\");\n");
                            sb2.Append("public DateTime " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"{0},\", " + tname + "." + s1 + " == baddate ? \"null\" :\"'\" + " + tname + "." + s1 + ".ToString() +\"'\");\n");
                            sb4.Append(tname + "." + s1 + "  = dt.Rows[0][\"" + s1 + "\"].ToString() == \"\" ? baddate : DateTime.Parse(dt.Rows[0][\"" + s1 + "\"].ToString());\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " ={0},\", " + tname + "." + s1 + " == baddate ? \"null\" :\"'\" + " + tname + "." + s1 + ".ToString() +\"'\");\n");
                            break;
                        case "int": sb1.Append("private int _" + s1 + " = 0;\n");
                            sb2.Append("public int " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"{0},\", " + tname + "." + s1 + ");\n");
                            sb4.Append(tname + "." + s1 + " = int.Parse( dt.Rows[0][\"" + s1 + "\"].ToString());\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " ='{0}',\", " + tname + "." + s1 + ");\n");
                            break;
                        case "decimal": sb1.Append("private decimal _" + s1 + " = 0M;\n");
                            sb2.Append("public decimal " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"{0},\", " + tname + "." + s1 + ");\n");
                            sb4.Append(tname + "." + s1 + " = decimal.Parse( dt.Rows[0][\"" + s1 + "\"].ToString());\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " ='{0}',\", " + tname + "." + s1 + ");\n");
                            break;
                        case "float": sb1.Append("private double _" + s1 + " = 0.0;\n");
                            sb2.Append("public double " + s1 + "{get { return _" + s1 + "; }\n\tset { _" + s1 + " = value; }}\n\n");
                            sb3.Append("strsql.AppendFormat(\"{0},\", " + tname + "." + s1 + ");\n");
                            sb4.Append(tname + "." + s1 + " = double.Parse( dt.Rows[0][\"" + s1 + "\"].ToString());\n");
                            sb5.Append("strsql.AppendFormat(\" " + s1 + " ='{0}',\", " + tname + "." + s1 + ");\n");
                            break;
                        default: sb1.Append("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
                            sb2.Append("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
                            break;
                    }
                }
            }

            sb2.Append("}\n}");

            sb3.Remove(sb3.ToString().LastIndexOf(",\",") , 1);
            sb3.Append("strsql.Append(\") select SCOPE_IDENTITY()\");\n");
            sb3.Append("return Convert.ToInt32(sql.ExecuteSc(strsql.ToString()));\n}\n");

            sb4.Append("return " + tname + ";\n}\n");

            sb5.Remove(sb5.ToString().LastIndexOf(",\","), 1);
            sb5.Append("strsql.AppendFormat(\" where " + idname + "={0}\", " + tname + "." + idname + ");\n");
            sb5.Append("return sql.ExecuteNonQuery(strsql.ToString());\n}\n");

            sb6.Append("public int Delete(int " + idname + ")\n{\n");
            sb6.Append("return sql.ExecuteNonQuery(\"delete from " + tname + " where " + idname + "=\" + " + idname + ");\n}\n");
            sb6.Append("public DataTable Select(string ss)\n{\n");
            sb6.Append("return sql.ExecuteDataSet(ss).Tables[0];\n}\n");

            sb7.Append("int Delete(int " + idname + ");\n");
            sb7.Append("DataTable Select(string ss);\n");
            sb7.Append("}\n}");

            sb8.Append("public int Delete(int " + idname + ")\n{\n");
            sb8.Append("return itu.Delete(" + idname + ");\n}\n");
            sb8.Append("public DataTable Select(string ss)\n{\n");
            sb8.Append("return itu.Select(ss);\n}\n}\n}");

            sb6.Append("}\n}");

            this.richTextBox4.Text = sb1.ToString() + "\n\n" + sb2.ToString();//model
            this.richTextBox7.Text = sb3.ToString() + "\n\n" + sb4.ToString() + "\n\n" + sb9.ToString() + "\n\n" + sb5.ToString() + "\n\n" + sb6.ToString();//sqlserverdal
            this.richTextBox8.Text = sb7.ToString();//idal
            this.richTextBox9.Text = sb8.ToString();//bll
            this.richTextBox14.Text = sb10.ToString();//dalfactory

            string filepath = folderpath + "\\Bll\\" + tname + "Bll.cs";
            if (File.Exists(filepath))
            {
                FileInfo fileInfo = new FileInfo(filepath);
                fileInfo.MoveTo(folderpath + "\\Bll\\" + tname + "Bll"+DateTime.Now.ToString("yyyyMMddHHmmss") +".cs");
            }
            File.AppendAllText(filepath, this.richTextBox9.Text.Replace("\n", "\r\n"), Encoding.Default);

            filepath = folderpath + "\\Model\\" + tname + ".cs";
            if (File.Exists(filepath)) File.Delete(filepath);
            File.AppendAllText(filepath, this.richTextBox4.Text.Replace("\n", "\r\n"), Encoding.Default);

            filepath = folderpath + "\\SQLServerDAL\\sql_" + tname + ".cs";
            if (File.Exists(filepath)) File.Delete(filepath);
            File.AppendAllText(filepath, this.richTextBox7.Text.Replace("\n", "\r\n"), Encoding.Default);

            filepath = folderpath + "\\IDAL\\" + tname + "Dal.cs";
            if (File.Exists(filepath)) File.Delete(filepath);
            File.AppendAllText(filepath, this.richTextBox8.Text.Replace("\n", "\r\n"), Encoding.Default);

            filepath = folderpath + "\\DALFactory\\" + tname + "_Factory.cs";
            if (File.Exists(filepath)) File.Delete(filepath);
            File.AppendAllText(filepath, this.richTextBox14.Text.Replace("\n", "\r\n"), Encoding.Default);
        }

就是这么长段的Append最终得到了我们需要的文件,最后在每个项目里面添加现有项就可以使用了。这是Windows应用所以要去Debug文件夹运行这个exe程序。

除了自己写,也可以使用工具,比如CodeSmith,这里给一个生成Entity的样例,选择数据库的表以后就会执行并生成文件。

<%@ CodeTemplate Language="C#" TargetLanguage="Text" Src="" ResponseEncoding="UTF-8" Inherits="" Debug="False" Description="Template description here." %>
<%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table that the object is based on." %>
<%--@ Property Name="ModuleName" Type="System.String"  Optional="false" Category="Context" --%>
<%@ Property Name="package" Type="System.String"  Optional="false" Category="Context" Default="com.test"%>
<%@ Property Name="className" Type="System.String"  Optional="false" Category="Context" Default="Test"%>

<%--@ Property Name="SourceDatabase" type="SchemaExplorer.DatabaseSchema" DeepLoad="True" Optional="False" Category="01. GettingStarted - Required" Description="Database that the tables views, and storedprocedures should be based on. IMPORTANT!!! If SourceTables and SourceViews areleft blank, the Entire Database will then be generated."--%>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="CodeSmith.CustomProperties" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="CodeSmith.CustomProperties" %>
<%@ Import Namespace="System.Windows.Forms.Design" %>
<%@ Import Namespace="System.IO" %>
<script runat="template">
    public string modelPackage = "entity1";
    public string getColumnName(string columnName, Boolean isClass){
        if(columnName == null || columnName.Equals("")){
            return "";
        }
        int indx = columnName.IndexOf("_");
        if(indx != -1){
            columnName = columnName.ToLower();
            string[] names = columnName.Split('_');
            columnName = "";
            for(int i=0;i<names.Length;i++){
                if(i==0 && !isClass){
                    columnName += names[i].Substring(0,1).ToLower();
                }else{
                    columnName += names[i].Substring(0,1).ToUpper();
                }
                columnName += names[i].Substring(1,names[i].Length - 1);
            }
        } else {
            if(isClass){
                    columnName = columnName.Substring(0,1).ToUpper() + columnName.Substring(1,columnName.Length - 1);
            } else {
                columnName = columnName.Substring(0,1).ToLower() + columnName.Substring(1,columnName.Length - 1);
            }
        }
        return columnName;
    }
    public string getTypeName(ColumnSchema column){
        return column.NativeType.ToUpper();
    }
    public string getColumnType(ColumnSchema column){
        switch (getTypeName(column)){
            case "BIGINT": return "Long";
            case "IMAGE": 
            case "REAL": 
            case "VARBINARY": 
            case "SQL_VARIANT": 
            case "BLOB": 
            case "CLOB": 
            case "BINARY": return "Byte[]";
            case "BIT": 
            case "SMALLINT": 
            case "TINYINT": return "int";
            case "FLOAT": return "float";
            case "NUMBER": 
            case "INT": return "int";
            case "DECIMAL": 
            case "NUMERIC": 
            case "MONEY": return "decimal";
            case "NCHAR": 
            case "NTEXT": 
            case "NVARCHAR": return "string";
            case "DATE": 
            case "DATETIME": 
            case "SMALLDATETIME": return "DateTime";
            case "SMALLMONEY": return "decimal";
            case "VARCHAR": 
            case "VARCHAR2": 
            case "SYSNAME": 
            case "CHAR": 
            case "TEXT": return "String";
            default: return getTypeName(column);
        }
    }

    public string getClassName(TableSchema table){
        return table.Name.Replace("db_", "DB")
            .Replace("rel_", "Rel")
            .Replace("biz_", "Biz")
            .Replace("log_", "Log")
            .Replace("sys_", "Sys");
    }

    public string path = "d:\\test";
    public string fileName = "test.txt";
    public void CreateDirectory(string path){
        if(!Directory.Exists(path)){
            Directory.CreateDirectory(path);
        } else {
            //Directory.Delete(path,true);
            Directory.CreateDirectory(path);
        }
    }
    public override void Render(TextWriter tw)
    {
        CreateDirectory(path);
        //base.Render(tw);
        StreamWriter fs2 = new StreamWriter(path + "\\" + fileName,true);
        this.Response.AddTextWriter(fs2);
        base.Render(tw);
        fs2.Close();
    }
</script>
using System;
using FluentNHibernate.Mapping;

namespace <%=this.package%>.Framework.Model.Mapping
{
    public class <%=getClassName(this.SourceTable)%>Map : ClassMap<<%=getClassName(this.SourceTable)%>>
    {
        public <%=getClassName(this.SourceTable)%>Map()
        {
            Table("<%=this.SourceTable%>");

            Id(x => x.Id).Column("<%=getColumnName(this.SourceTable.Columns[0].Name,false) %>").GeneratedBy.Identity();
            Map(x => x.CreateTime);
            Map(x => x.UpdateTime);
            Map(x => x.IsShow);
            Map(x => x.IsDel);

            <%
        bool firstone=true;
            foreach(ColumnSchema col in this.SourceTable.Columns)
            {
                string columnName = col.Name;
                if(columnName != "IsDel" && columnName != "IsShow" && columnName != "CreateTime" && columnName != "UpdateTime")
                {
                    if(firstone) {firstone=false; continue; }
                %>
            Map(x => x.<%=getColumnName(columnName,false) %>).Column("<%=columnName %>");
                <% 
                } 
            }%>
        }
    }
}

本教程代码参考 EshineASPNet\csswrap\main.cs

完整教程链接:ASP.Net: EshineASPNet-基于ASP.Net敏捷开发开源框架

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概况: 1、 适用于.net项目,基于MVC架构模式 2、 按照数据库结构生成基础开发类库 3、 数据库支持SQL2000和SQL2005两个版本 4、 类库为分层框架工厂模式,依次分为:数据库交互层(SqlHelper)、业务实体层(Model)、数据处理层(DAL)、数据接口层(IDAL)、数据工厂层(DALFactory)、业务层(BLL)6层 5、 业务实体层与业务层直接与UI交互 6、 生成类库的同时系统自动生成相应的存储过程脚本(Proc文件夹)。 一、配置 打开SQLHelper.cs文件,将相应的数据库连接配置信息添加到配置文件中即可。 二、存储过程 打开Proc文件夹,将Proc.sql在相应SQL命令执行窗口中打开,然后执行即可。 二、业务实体层 实体类名为数据表名称(首字母大写)加上Model后缀组成,类属性为相应字段名称(首字母大写),包含相应构造函数。 三、业务层 以下介绍以CalendarNotes表为例,主键字段为id。 1、插入数据 public string Insert(CalendarNotesModel model) 插入单条数据,即业务实体对象 public string Insert(List list) 插入多条数据,即泛型集合(集合元素为业务实体对象) public string Insert(CalendarNotesModel model, object objTrans) 在指定事务控制中插入单条数据 public string Insert(List list, object objTrans) 在指定事务控制中插入多条数据 2、插入并返回所插入的记录的自增ID 适用范围为相应数据表中存在标识字段,可同步获取到新插入数据的标识字段值。 public string Insert_Identity(CalendarNotesModel model) 插入单条数据 public string Insert_Identity(CalendarNotesModel model, object objTrans) 在指定事务控制中插入单条数据 3、更新数据 public string Update(CalendarNotesModel model) 更新单条数据,使用过程是:先取出相应业务实体,然后修改字段值(非主键字段),然后调用此方法更新数据库。 public string Update(CalendarNotesModel model, object objTrans) 在指定事务控制中更新单条数据,调用过程同上。 4、删除数据 public string Delete(string id) 根据主键删除单条数据。 public string Delete(CalendarNotesModel model) 根据指定条件批量删除数据,调用过程:先实例化一个CalendarNotesModel对象,然后设置删除条件(即给相应属性字段赋值),然后调用此方法。 public string Delete(string id, object objTrans) 在指定事务中删除单条数据。 public string Delete(CalendarNotesModel model, object objTrans) 在指定事务中批量删除数据。 5、查询数据 public List SelectAll() 查询出当前数据表所有数据。 public CalendarNotesModel Select(string id) 根据主键查询单条数据。 public List Select(CalendarNotesModel model, string querytype) 根据指定条件查询数据集合,调用过程:先实例化一个CalendarNotesModel对象,然后设置筛选条件(即给相应属性字段赋值),然后调用此方法,可通过querytype参数设置筛选出的数据集的排序,如” UpdateTime DESC”,默认可为空(””)。 public CalendarNotesModel Select(string id, object objTrans) 在指定事务控制中根据主键查询单条数据。 public List Select(CalendarNotesModel model, string querytype, object objTrans) 在指定事务控制中根据指定条件查询数据集合。
【基本说明】 1、能够生成三层工厂模式操作的所有基本代码,简单的数据库操作。 2、生成的代码包括了 MODEL、BLL、Factory、IDALDAL、DBHelper、Config 生成的代码内有详细注释可提供参考。 3、提供数据库增、删、改、查、分页及其事务,并提供多种重载方式。 4、所有数据表必须有主键且主键是第一列,这个主要是为了保证获取记录和分页获取的统一性,其实可以取消这个规则。 6、建议新建App_Code文件夹将生成的C#代码放里面。见此文件夹直接拷贝到项目下既可以使用。 7、不保证所提供软件或程序的完整性和安全性。 8、请在使用前查毒 (这也是您使用其它网络资源所必须注意的) 。 9、《Coder(ASP.NET代码生成器)》需要.Net FrameWork2.0运行环境,基于SQL Server 2005使用。 10、如无法运行本软件,请下载并安装由微软公司提供的.Net FrameWork2.0系统. 11、如果您在使用过程中遇到程序问题或建议请于我联系我的Email是 mailto:[email protected]。 【生成单层代码】 输入数据库名(Server)登录名(Name)密码(Pwd),连接后选择库名(Database)表名(Tables) 之后单击'生成单层代码'新建App_Code文件夹将生成的C#代码(ASP.NET后台代码)放里面, 【生成三层工厂模式项目】 (1)B/S架构: 输入数据库名(Server)登录名(Name)密码(Pwd)连接数据库成功后直接点生成整个项目选择路径确定就好了。 (2)C/S架构: 输入数据库名(Server)登录名(Name)密码(Pwd)连接数据库成功后直接点生成整个项目选择路径确定, 生成项目后打开该项目解决方案将表示层删掉, 再单击vs的(文件→添加→新建项目→选择Windows应用程序),这样就生成C/S架构的程序了!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值