欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

利用add-in扩展性将代码生成器集成到VS环境中(四)-生成DAL层代码

创建时间:2012年12月25日 16:03  阅读次数:(5314)
分享到:
DAL需生成的代码比较多,共有以下几个方法:
1,判断该记录是否已经存在
2,增加一条数据
3,更新一条数据
4,更新一条数据状态
5,删除一条数据
6,获得数据列表
7,得到一个对象实体
大家可以根据自己的需要改写生成代码。

public class SetDAL
{
private TextSelection ts;
private TableFrame tableframe;
private string namespacestr;
private string folder;
private string dalname;
private string modelname;

public SetDAL(TextSelection _ts, TableFrame _tableframe, string _namespacestr, string _dalname, string _modelname, string _folder)
{
    this.ts = _ts;
    this.tableframe = _tableframe;
    this.namespacestr = _namespacestr;
    this.modelname = _modelname;
    this.dalname = _dalname;
    this.folder = _folder;
}

public void SetText()
{
    ts.SelectAll();
    ts.Text = GetText().ToString();
}

private StringBuilder GetText()
{
    List<TableColumn> tempTableItems = tableframe.SplitedItems(tableframe.TableItems);
    StringBuilder _str = new StringBuilder();

    _str.Append("/*using System;").Append("\n");
    _str.Append("using System.Collections.Generic;").Append("\n");
    _str.Append("using System.Data;").Append("\n");
    _str.Append("using System.Text;").Append("\n");
    _str.Append("using System.Collections;").Append("\n");
    _str.Append("using System.Data.SqlClient;").Append("\n").Append("\n");
    _str.Append("namespace ").Append(namespacestr).Append(".").Append(dalname).Append(".").Append(folder).Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("public class ").Append(tableframe.TableName).Append("\n");
    _str.Append("{").Append("\n");

    tools.SetNoteStr(_str, "判断该记录是否已经存在");
    _str.Append("public bool Exists(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(")").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"select count(1) from ").Append(tableframe.TableName).Append(" where ").Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems)).Append("\");").Append("\n");
    _str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, true)).Append(";\n");
    _str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems)).Append("\n");
    _str.Append("return DbHelperSQL.Exists(strSql.ToString(), parameters);").Append("\n");
    _str.Append("}").Append("\n").Append("\n");

    tools.SetNoteStr(_str, "增加一条数据");
    _str.Append("public DictionaryEntry Add_DictionaryEntry(").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" model)").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"insert into ").Append(tableframe.TableName).Append("(\");").Append("\n");
    _str.Append("strSql.Append(\"");
    StringBuilder colstr = new StringBuilder();
    foreach (TableColumn col in tempTableItems)
    {
        colstr.Append(",").Append(col.ColumnName);
    }
    _str.Append(colstr.ToString().substring(1));
    _str.Append("\");").Append("\n");
    _str.Append("strSql.Append(\") values (\")").Append(";\n");
    _str.Append("strSql.Append(\"");
    colstr = new StringBuilder();
    foreach (TableColumn col in tempTableItems)
    {
        colstr.Append(",@").Append(col.ColumnName);
    }
    _str.Append(colstr.ToString().substring(1));
    _str.Append(")\");").Append("\n");
    _str.Append(tools.GetSqlParameterStr(tempTableItems, true)).Append(";\n");
    _str.Append(tools.GetSqlParameterValueStr(tempTableItems)).Append("\n");
    _str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
    _str.Append("}").Append("\n").Append("\n");

    tools.SetNoteStr(_str, "更新一条数据");
    _str.Append("public DictionaryEntry Update_DictionaryEntry(").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" model)").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"Update ").Append(tableframe.TableName).Append(" set \");").Append("\n");
    for (int i = 0; i < tempTableItems.Count; i++)
    {
        if (tableframe.KeysItems.Find(delegate(TableColumn p) { return p.ColumnName == tempTableItems[i].ColumnName; }) == null)
        {
            _str.Append("strSql.Append(\"").Append(tempTableItems[i].ColumnName).Append("=@").Append(tempTableItems[i].ColumnName).Append("").Append((i == (tempTableItems.Count - 1)) ? string.Empty : ",").Append("\")").Append(";\n");
        }
    }
    _str.Append("strSql.Append(\" where ");
    _str.Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems));
    _str.Append("\");").Append("\n");
    _str.Append(tools.GetSqlParameterStr(tempTableItems, true)).Append(";\n");
    _str.Append(tools.GetSqlParameterValueStr(tempTableItems)).Append("\n");
    _str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
    _str.Append("}").Append("\n").Append("\n");

    tools.SetNoteStr(_str, "更新一条数据状态");
    _str.Append("public DictionaryEntry ChangeState_DictionaryEntry(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(", string State, string Auditer, DateTime AuditDate)").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"Update " + tableframe.TableName + " set State=@State,Auditer=@Auditer,AuditDate=@AuditDate where ").Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems)).Append("\");").Append("\n");
    _str.Append("SqlParameter[] parameters = {").Append("\n");
    _str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, false));
    _str.Append("\t\t\t\t\t\t\t\tnew SqlParameter(\"@State\", SqlDbType.VarChar,50),").Append("\n");
    _str.Append("\t\t\t\t\t\t\t\tnew SqlParameter(\"@Auditer\", SqlDbType.VarChar,50),").Append("\n");
    _str.Append("\t\t\t\t\t\t\t\tnew SqlParameter(\"@AuditDate\", SqlDbType.DateTime,8),").Append("\n");
    _str.Append("\t\t\t\t\t\t\t\t\t\t};").Append("\n");
    _str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems));
    _str.Append("parameters[").Append(tableframe.KeysItems.Count).Append("].Value = State;").Append("\n");
    _str.Append("parameters[").Append(tableframe.KeysItems.Count + 1).Append("].Value = Auditer;").Append("\n");
    _str.Append("parameters[").Append(tableframe.KeysItems.Count + 2).Append("].Value = AuditDate;").Append("\n").Append("\n");
    _str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
    _str.Append("}").Append("\n").Append("\n");

    tools.SetNoteStr(_str, "删除一条数据");
    _str.Append("public DictionaryEntry Delete_DictionaryEntry(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(")").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"Delete from ").Append(tableframe.TableName).Append("\");").Append("\n");
    _str.Append("strSql.Append(\" where ");
    _str.Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems));
    _str.Append("\");").Append("\n");
    _str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, true)).Append(";\n");
    _str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems)).Append("\n");
    _str.Append("return new DictionaryEntry(strSql, parameters);").Append("\n");
    _str.Append("}").Append("\n").Append("\n");

    tools.SetNoteStr(_str, "获得数据列表");
    _str.Append("public DataSet GetList(string strWhere)").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"select * FROM ").Append(tableframe.TableName).Append("\");").Append("\n");
    _str.Append("if (strWhere.Trim().Length != 0)").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("strSql.Append(\" where \" + strWhere);").Append("\n");
    _str.Append("}").Append("\n").Append("\n");
    _str.Append("return DbHelperSQL.Query(strSql.ToString());").Append("\n");
    _str.Append("}").Append("\n").Append("\n");

    tools.SetNoteStr(_str, "得到一个对象实体");
    _str.Append("public ").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" GetModel(").Append(tools.GetPrimaryKeysStr(tableframe.KeysItems)).Append(")").Append("\n");
    _str.Append("{").Append("\n"); ;
    _str.Append("StringBuilder strSql = new StringBuilder();").Append("\n");
    _str.Append("strSql.Append(\"select top 1 * from " + tableframe.ViewName + " \");").Append("\n");
    _str.Append("strSql.Append(\" where ").Append(tools.GetPrimaryKeyFilterStr(tableframe.KeysItems)).Append("\");").Append("\n");
    _str.Append(tools.GetSqlParameterStr(tableframe.KeysItems, true)).Append(";\n");
    _str.Append(tools.GetPrimaryKeyValueStr(tableframe.KeysItems)).Append("\n");
    _str.Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append(" model = new ").Append(namespacestr).Append(".").Append(modelname).Append(".").Append(folder).Append(".").Append(tableframe.TableName).Append("();").Append("\n");
    _str.Append("DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);").Append("\n");
    _str.Append("if (ds.Tables[0].Rows.Count > 0)").Append("\n");
    _str.Append("{");

    string s = "";
    foreach (TableColumn col in tableframe.ViewItems)
    {
        switch (col.ColumnType.ToLower())
        {
            case "nchar":
            case "ntext":
            case "varchar":
                {
                    _str.Append("model.").Append(col.ColumnName).Append(" = ds.Tables[0].Rows[0][\"").Append(col.ColumnName).Append("\"].ToString();").Append("\n");
                    break;
                }
            case "tinyint":
            case "int":
                {
                    s = "model." + col.ColumnName + " =int.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
                    ToConvert(_str, col.ColumnName, s);
                    break;
                }
            case "money":
            case "decimal":
            case "numeric":
                {
                    s = "model." + col.ColumnName + " =decimal.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
                    ToConvert(_str, col.ColumnName, s);
                    break;
                }
            case "float":
                {
                    s = "model." + col.ColumnName + " =float.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
                    ToConvert(_str, col.ColumnName, s);
                    break;
                }
            case "datetime":
                {
                    s = "model." + col.ColumnName + " =DateTime.Parse(ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString());";
                    ToConvert(_str, col.ColumnName, s);
                    break;
                }
            case "bit":
                {
                    _str.Append("if (ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString() != \"\")").Append("\n");
                    _str.Append("{").Append("\n");
                    _str.Append("if ((ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString() == \"1\") || (ds.Tables[0].Rows[0][\"" + col.ColumnName + "\"].ToString().ToLower() == \"true\"))").Append("\n");
                    _str.Append("{").Append("\n");
                    _str.Append("model." + col.ColumnName + " = true;").Append("\n");
                    _str.Append("}").Append("\n");
                    _str.Append("else").Append("\n");
                    _str.Append("{").Append("\n");
                    _str.Append("model." + col.ColumnName + " = false;").Append("\n");
                    _str.Append("}").Append("\n");
                    _str.Append("}").Append("\n");
                    break;
                }
        }
    }

    _str.Append("return model;").Append("\n");
    _str.Append("}").Append("\n");
    _str.Append("else").Append("\n");
    _str.Append("{").Append("\n");
    _str.Append("return null;").Append("\n");
    _str.Append("}").Append("\n");
    _str.Append("}").Append("\n");
    _str.Append("}").Append("\n");
    _str.Append("}").Append("\n");

    return _str;
}

private void ToConvert(StringBuilder str, string columnname, string lenstr)
{
    str.Append("if (ds.Tables[0].Rows[0][\"" + columnname + "\"].ToString() != \"\")").Append("\n");
    str.Append("{").Append("\n");
    str.Append(lenstr).Append("\n");
    str.Append("}").Append("\n");
}
}
l
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 47+58=? 的结果(结果是:105)
结  果: