T4 生成实体和简单的CRUD操作
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core.dll" #>
<#@ assembly name="System.Data.dll" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ assembly name="System.Xml.dll" #>
<#@ assembly name="MySql.Data" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Data" #>
<#@ import namespace=" System.Data.SqlClient" #>
<#@ import namespace="MySql.Data.MySqlClient" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Text.RegularExpressions" #><#+ #region GetDbTables
public class DbHelper
{ #region 去下划线,转大写
public static string ToSplitFirstUpper(string file)
{
string[] words = file.Split('_');
StringBuilder firstUpperWorld = new StringBuilder();
foreach (string word in words)
{
string firstUpper = ToFirstUpper(word);
firstUpperWorld.Append(firstUpper);
}
string firstUpperFile = firstUpperWorld.ToString().TrimEnd(new char[] { '_' });
return firstUpperFile;
} // 将字符串设置成首字母大写
public static string ToFirstUpper(string field)
{
string first = field.Substring(0, 1).ToUpperInvariant();
string result = first;
if (field.Length > 1)
{
string after = field.Substring(1);
result = first + after;
}
return result;
} #endregion #region 生成简单的sql语句
public static string GetInsertSql(string connectionString, string database, string tableName)
{
var list = GetDbColumns(connectionString, database, tableName);
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
foreach (var item in list)
{
string field = item.Field;
if (field.ToLower() == "id") continue;
sb1.Append(field).Append(", ");
sb2.Append("?").Append(field).Append(", ");
}
string s1 = sb1.ToString().Trim(new char[] { ',', ' ' });
string s2 = sb2.ToString().Trim(new char[] { ',', ' ' });
return string.Format("INSERT INTO {0}({1}) VALUES({2})", tableName, s1, s2); } public static string GetParameter(string connectionString, string database, string tableName, bool hasId)
{
var list = GetDbColumns(connectionString, database, tableName);
StringBuilder sb = new StringBuilder();
sb.Append("MySqlParameter[] paras = new MySqlParameter[] { \r\n");
foreach (var item in list)
{
if (item.Field.ToLower() == "id" && !hasId) continue;
sb.AppendFormat(" new MySqlParameter(\"{0}\", this.{1}),\r\n", item.Field, ToSplitFirstUpper(item.Field));
}
string s = sb.ToString().Trim(new char[] { ',', ' ', '\r', '\n' });
s = s + "\r\n };\r\n";
return s;
} public static string GetUpdateSql(string connectionString, string database, string tableName)
{
var list = GetDbColumns(connectionString, database, tableName);
StringBuilder sb1 = new StringBuilder();
foreach (var item in list)
{
string field = item.Field;
if (field.ToLower() == "id") continue;
sb1.Append(field).Append(" = ").Append("?").Append(field).Append(", "); }
string s1 = sb1.ToString().Trim(new char[] { ',', ' ' });
return string.Format("UPDATE {0} SET {1} WHERE id = ?id", tableName, s1); } #endregion #region GetDbTables public static List<DbTable> GetDbTables(string connectionString, string database)
{ #region SQL
string sql = string.Format("SHOW TABLE STATUS FROM {0};", database);
#endregion
DataTable dt = GetDataTable(connectionString, sql);
return dt.Rows.Cast<DataRow>().Select(row => new DbTable
{
TableName = row.Field<string>("Name"),
Rows = row.Field<UInt64>("Rows"),
Comment = row.Field<string>("Comment")
}).ToList();
}
#endregion #region GetDbColumns public static List<DbColumn> GetDbColumns(string connectionString, string database, string tableName)
{
#region SQL
string sql = string.Format("SHOW FULL COLUMNS FROM {0} FROM {1};", tableName, database);
#endregion
DataTable dt = GetDataTable(connectionString, sql);
return dt.Rows.Cast<DataRow>().Select(row => new DbColumn
{
IsPrimaryKey = !String.IsNullOrEmpty(row.Field<string>("Key")),
Field = row.Field<string>("Field"),
Type = row.Field<string>("Type"),
Comment = row.Field<string>("Comment"),
IsNullable = row.Field<string>("NULL") == "YES"
}).ToList();
} #endregion #region GetDataTable public static DataTable GetDataTable(string connectionString, string commandText, params SqlParameter[] parms)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
MySqlCommand command = connection.CreateCommand();
command.CommandText = commandText;
command.Parameters.AddRange(parms);
MySqlDataAdapter adapter = new MySqlDataAdapter(command); DataTable dt = new DataTable();
adapter.Fill(dt); return dt;
}
} #endregion
}
#endregion #region DbTable
/// <summary>
/// 表结构
/// </summary>
public sealed class DbTable
{
/// <summary>
/// 表名称
/// </summary>
public string TableName { get; set; } /// <summary>
/// 行数
/// </summary>
public UInt64 Rows { get; set; } /// <summary>
/// 描写叙述信息
/// </summary>
public string Comment { get; set; }
}
#endregion #region DbColumn
/// <summary>
/// 表字段结构
/// </summary>
public sealed class DbColumn
{
/// <summary>
/// 是否主键
/// </summary>
public bool IsPrimaryKey { get; set; }
/// <summary>
/// 字段名称
/// </summary>
public string Field { get; set; }
/// <summary>
/// 字段类型 int(11)
/// </summary>
public string Type { get; set; }
/// <summary>
/// 字段类型int
/// </summary>
public string ColumnType
{
get
{
return Type.IndexOf('(') == -1 ? Type : Type.Substring(0, Type.IndexOf('('));
}
}
/// <summary>
/// 数据库类型相应的C#类型
/// </summary>
public string CSharpType
{
get
{
return MysqlDbTypeMap.MapCsharpType(ColumnType);
}
}
/// <summary>
///
/// </summary>
public Type CommonType
{
get
{
return MysqlDbTypeMap.MapCommonType(ColumnType);
}
}
/// <summary>
/// 描写叙述
/// </summary>
public string Comment { get; set; }
/// <summary>
/// 是否同意空
/// </summary>
public bool IsNullable { get; set; } /// <summary>
/// 字符长度
/// </summary>
public int CharLength
{
get
{
Regex regex = new Regex(@"(?<=\()\d*?(?=\))", RegexOptions.Singleline);
if (regex.IsMatch(Type))
{
Match match = regex.Match(Type);
while (match != null && match.Success)
{
int charLength;
if (Int32.TryParse(match.Value, out charLength))
{
return charLength;
}
}
}
return 0;
}
}
}
#endregion #region SqlServerDbTypeMap public class MysqlDbTypeMap
{
public static string MapCsharpType(string dbtype)
{
if (string.IsNullOrEmpty(dbtype)) return dbtype;
dbtype = dbtype.ToLower();
string csharpType = "object";
switch (dbtype)
{
case "bigint": csharpType = "long"; break;
case "binary": csharpType = "byte[]"; break;
case "bit": csharpType = "bool"; break;
case "char": csharpType = "string"; break;
case "date": csharpType = "DateTime"; break;
case "datetime": csharpType = "DateTime"; break;
case "datetime2": csharpType = "DateTime"; break;
case "datetimeoffset": csharpType = "DateTimeOffset"; break;
case "dityint": csharpType = "bool"; break;
case "decimal": csharpType = "decimal"; break;
case "float": csharpType = "double"; break;
case "image": csharpType = "byte[]"; break;
case "int": csharpType = "int"; break;
case "money": csharpType = "decimal"; break;
case "nchar": csharpType = "string"; break;
case "ntext": csharpType = "string"; break;
case "numeric": csharpType = "decimal"; break;
case "nvarchar": csharpType = "string"; break;
case "real": csharpType = "Single"; break;
case "smalldatetime": csharpType = "DateTime"; break;
case "smallint": csharpType = "short"; break;
case "smallmoney": csharpType = "decimal"; break;
case "sql_variant": csharpType = "object"; break;
case "sysname": csharpType = "object"; break;
case "text": csharpType = "string"; break;
case "longtext": csharpType = "string"; break;
case "time": csharpType = "TimeSpan"; break;
case "timestamp": csharpType = "byte[]"; break;
case "tinyint": csharpType = "byte"; break;
case "uniqueidentifier": csharpType = "Guid"; break;
case "varbinary": csharpType = "byte[]"; break;
case "varchar": csharpType = "string"; break;
case "xml": csharpType = "string"; break;
default: csharpType = "object"; break;
}
return csharpType;
} public static Type MapCommonType(string dbtype)
{
if (string.IsNullOrEmpty(dbtype)) return Type.Missing.GetType();
dbtype = dbtype.ToLower();
Type commonType = typeof(object);
switch (dbtype)
{
case "bigint": commonType = typeof(long); break;
case "binary": commonType = typeof(byte[]); break;
case "bit": commonType = typeof(bool); break;
case "char": commonType = typeof(string); break;
case "date": commonType = typeof(DateTime); break;
case "datetime": commonType = typeof(DateTime); break;
case "datetime2": commonType = typeof(DateTime); break;
case "datetimeoffset": commonType = typeof(DateTimeOffset); break;
case "dityint": commonType = typeof(Boolean); break;
case "decimal": commonType = typeof(decimal); break;
case "float": commonType = typeof(double); break;
case "image": commonType = typeof(byte[]); break;
case "int": commonType = typeof(int); break;
case "money": commonType = typeof(decimal); break;
case "nchar": commonType = typeof(string); break;
case "ntext": commonType = typeof(string); break;
case "numeric": commonType = typeof(decimal); break;
case "nvarchar": commonType = typeof(string); break;
case "real": commonType = typeof(Single); break;
case "smalldatetime": commonType = typeof(DateTime); break;
case "smallint": commonType = typeof(short); break;
case "smallmoney": commonType = typeof(decimal); break;
case "sql_variant": commonType = typeof(object); break;
case "sysname": commonType = typeof(object); break;
case "text": commonType = typeof(string); break;
case "time": commonType = typeof(TimeSpan); break;
case "timestamp": commonType = typeof(byte[]); break;
case "tinyint": commonType = typeof(byte); break;
case "uniqueidentifier": commonType = typeof(Guid); break;
case "varbinary": commonType = typeof(byte[]); break;
case "varchar": commonType = typeof(string); break;
case "xml": commonType = typeof(string); break;
default: commonType = typeof(object); break;
}
return commonType;
}
}
#endregion #>
主要跟大家交流下T4,我这里针对的是mysql,我本人比較喜欢用mysql,所以语法针对mysql,所以你要准备mysql的DLL了,同理sqlserver差点儿相同,有兴趣能够自己写写,首先网上找了一个T4的帮助类,得到一些数据库属性,命名为 DbHelper.ttinclude
在加一个c#的sql帮助类, 命名为DBHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Configuration;
using MySql.Data.MySqlClient;
using System.Reflection;
using System.Text; namespace ToolSite.Entity
{ public class DBHelper
{
//加入�到配置文件的<configuration>节点中
// <connectionStrings>
// <!--改写数据库名,登陆名,password-->
// <add name="conStr" connectionString="Data Source=.;Initial Catalog=;User ID=;Password="/>
//
// </connectionStrings>
//<appSettings>
// <add key="dbConnection" value="server=192.168.1.111\SQL2005;database=GCUMS;UID=sa;PWD=sa;max pool size=20000;Pooling=true;"/>
// </appSettings>
//先加入�configuration引用,引入命名空间
//private static readonly string conStr = ConfigurationManager.AppSettings["connstr"];
//private static readonly string conStr = Config.ConnStr;
/// <summary>
/// 获得连接字符串
/// </summary>
/// <returns></returns>
public static MySqlConnection getConn()
{
return new MySqlConnection(Config.ConnStr);
}
/// <summary>
/// 查询获得首行首列的值,格式化SQL语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object Scalar(String sql)
{
using (MySqlConnection con = getConn())
{
try
{
MySqlCommand com = new MySqlCommand(sql, con);
con.Open();
return com.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
}
}
/// <summary>
/// 查询获得首行首列的值 參数化sql语句
/// </summary>
/// <param name="paras">參数数组</param>
/// <param name="sql">sql语句</param>
/// <returns></returns>
public static object Scalar(string sql, MySqlParameter[] paras)
{
using (MySqlConnection con = getConn())
{
try
{
MySqlCommand com = new MySqlCommand(sql, con);
con.Open();
if (paras != null) //假设參数
{
com.Parameters.AddRange(paras);
}
return com.ExecuteScalar();
}
catch (Exception ex)
{
throw ex; }
}
} /// <summary>
/// 增删改操作,返回受影响的行数,格式化SQL语句
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int NoneQuery(String sql)
{ using (MySqlConnection conn = getConn())
{
conn.Open();
using (MySqlCommand comm = new MySqlCommand(sql, conn))
{
return comm.ExecuteNonQuery();
} }
}
/// <summary>
/// 增删改操作,返回受影响的行数 存储过程
/// </summary>
/// <param name="sql">存储过程名称</param>
/// <param name="paras">參数</param>
/// <returns></returns>
public static int NoneQuery(String sql, MySqlParameter[] paras)
{
using (MySqlConnection conn = getConn())
{
conn.Open();
using (MySqlCommand comm = new MySqlCommand(sql, conn))
{
comm.Parameters.AddRange(paras);
return comm.ExecuteNonQuery();
} }
}
/// <summary>
/// 查询操作,返回一个数据表
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataTable GetDateTable(String sql)
{
using (MySqlConnection con = getConn())
{
DataTable dt = new DataTable();
try
{
MySqlDataAdapter sda = new MySqlDataAdapter(sql, con);
sda.Fill(dt);
}
catch (Exception ex)
{
throw ex;
}
return dt;
}
}
/// <summary>
/// 查询操作,返回一个数据表,存储过程
/// </summary>
/// <param name="sp_Name">存储过程名称</param>
/// <param name="paras">存储过程參数</param>
/// <returns></returns>
public static DataTable GetDateTable(String sql, MySqlParameter[] paras)
{
using (MySqlConnection con = getConn())
{
DataTable dt = new DataTable();
try
{
MySqlCommand com = new MySqlCommand(sql, con);
com.Parameters.AddRange(paras);
MySqlDataAdapter sda = new MySqlDataAdapter(com);
sda.Fill(dt);
}
catch (Exception ex)
{
throw ex;
}
return dt;
}
} } /// <summary>
/// DataTable与实体类互相转换
/// </summary>
/// <typeparam name="T">实体类</typeparam>
public class DatatableFill<T> where T : new()
{
#region DataTable转换成实体类
/// <summary>
/// 填充对象列表:用DataSet的第一个表填充实体类
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns></returns>
public List<T> FillModel(DataSet ds)
{
if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0)
{
return new List<T>();
}
else
{
return FillModel(ds.Tables[0]);
}
} /// <summary>
/// 填充对象列表:用DataSet的第index个表填充实体类
/// </summary>
public List<T> FillModel(DataSet ds, int index)
{
if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0)
{
return new List<T>() ;
}
else
{
return FillModel(ds.Tables[index]);
}
} /// <summary>
/// 填充对象列表:用DataTable填充实体类
/// </summary>
public List<T> FillModel(DataTable dt)
{
if (dt == null || dt.Rows.Count == 0)
{
return new List<T>();
}
List<T> modelList = new List<T>();
foreach (DataRow dr in dt.Rows)
{
//T model = (T)Activator.CreateInstance(typeof(T));
T model = new T();
for (int i = 0; i < dr.Table.Columns.Count; i++)
{
PropertyInfo propertyInfo = model.GetType().GetProperty(ToSplitFirstUpper(dr.Table.Columns[i].ColumnName));
if (propertyInfo != null && dr[i] != DBNull.Value)
propertyInfo.SetValue(model, dr[i], null);
} modelList.Add(model);
}
return modelList;
} /// <summary>
/// 填充对象:用DataRow填充实体类
/// </summary>
public T FillModel(DataRow dr)
{
if (dr == null)
{
return default(T);
} //T model = (T)Activator.CreateInstance(typeof(T));
T model = new T(); for (int i = 0; i < dr.Table.Columns.Count; i++)
{
PropertyInfo propertyInfo = model.GetType().GetProperty(ToSplitFirstUpper(dr.Table.Columns[i].ColumnName));
if (propertyInfo != null && dr[i] != DBNull.Value)
propertyInfo.SetValue(model, dr[i], null);
}
return model;
} // 去下划线,转大写
public static string ToSplitFirstUpper(string file)
{
string[] words = file.Split('_');
StringBuilder firstUpperWorld = new StringBuilder();
foreach (string word in words)
{
string firstUpper = ToFirstUpper(word);
firstUpperWorld.Append(firstUpper);
}
string firstUpperFile = firstUpperWorld.ToString().TrimEnd(new char[] { '_' });
return firstUpperFile;
} // 将字符串设置成首字母大写
public static string ToFirstUpper(string field)
{
string first = field.Substring(0, 1).ToUpperInvariant();
string result = first;
if (field.Length > 1)
{
string after = field.Substring(1);
result = first + after;
}
return result;
}
#endregion #region 实体类转换成DataTable /// <summary>
/// 实体类转换成DataSet
/// </summary>
/// <param name="modelList">实体类列表</param>
/// <returns></returns>
public DataSet FillDataSet(List<T> modelList)
{
if (modelList == null || modelList.Count == 0)
{
return null;
}
else
{
DataSet ds = new DataSet();
ds.Tables.Add(FillDataTable(modelList));
return ds;
}
} /// <summary>
/// 实体类转换成DataTable
/// </summary>
/// <param name="modelList">实体类列表</param>
/// <returns></returns>
public DataTable FillDataTable(List<T> modelList)
{
if (modelList == null || modelList.Count == 0)
{
return null;
}
DataTable dt = CreateData(modelList[0]); foreach (T model in modelList)
{
DataRow dataRow = dt.NewRow();
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
{
dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
}
dt.Rows.Add(dataRow);
}
return dt;
} /// <summary>
/// 依据实体类得到表结构
/// </summary>
/// <param name="model">实体类</param>
/// <returns></returns>
private DataTable CreateData(T model)
{
DataTable dataTable = new DataTable(typeof(T).Name);
foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
{
dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
}
return dataTable;
} #endregion
}
}
再家一个基本的T4文件,命名为 Entity.tt
<#@ include file="$(ProjectDir)Entity/DbHelper.ttinclude"#>
using System;
using MySql.Data.MySqlClient;
using System.Data;
using System.Collections.Generic;
namespace ToolSite.Entity
{
public class Config
{
public static string DefaultDb = "<#=config.DbDatabase#>";
public static string ConnStr = "<#=config.ConnectionString#>";
} <#foreach(var table in DbHelper.GetDbTables(config.ConnectionString, config.DbDatabase)){#>
<# string tableName = DbHelper.ToSplitFirstUpper(table.TableName); #>
public partial class <#=tableName#>
{
#region Field
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, table.TableName)){#>
/// <summary>
/// <#= column.Comment#>
/// </summary>
public <#= column.CSharpType#> <#=DbHelper.ToSplitFirstUpper(column.Field)#> { get; set; }
<#}#> #endregion public int Save()
{
<#=DbHelper.GetParameter(config.ConnectionString, config.DbDatabase, table.TableName, false)#>
string sql = "<#=DbHelper.GetInsertSql(config.ConnectionString, config.DbDatabase, table.TableName)#>";
return DBHelper.NoneQuery(sql, paras);
} public int Update()
{ <#=DbHelper.GetParameter(config.ConnectionString, config.DbDatabase, table.TableName, true)#>
string sql = "<#=DbHelper.GetUpdateSql(config.ConnectionString, config.DbDatabase, table.TableName)#>";
return DBHelper.NoneQuery(sql, paras); } public static int Delete(int id)
{
string sql = string.Format("DELETE FROM <#=table.TableName#> WHERE id = {0}", id);
return DBHelper.NoneQuery(sql); } public static <#=tableName#> GetById(int id)
{
string sql = string.Format("SELECT * FROM <#=table.TableName#> WHERE id = {0}", id);
DataTable table = DBHelper.GetDateTable(sql);
List<<#=tableName#>> list = new DatatableFill<<#=tableName#>>().FillModel(table);
//List<<#=tableName#>> list = Mapper.DynamicMap<IDataReader, List<<#=tableName#>>>(table.CreateDataReader());
if (list == null || list.Count == 0) return null;
return list[0];
} public static List<<#=tableName#>> GetList()
{
string sql = "SELECT * FROM <#=table.TableName#>";
DataTable table = DBHelper.GetDateTable(sql);
List<<#=tableName#>> list = new DatatableFill<<#=tableName#>>().FillModel(table);
//List<<#=tableName#>> list = Mapper.DynamicMap<IDataReader, List<<#=tableName#>>>(table.CreateDataReader());
return list; } public static List<<#=tableName#>> Find(string where)
{
string sql = string.Format("SELECT * FROM <#=table.TableName#> WHERE {0};", where);
DataTable table = DBHelper.GetDateTable(sql);
return new DatatableFill<<#=tableName#>>().FillModel(table);
} public static List<<#=tableName#>> Find(string field, string prop)
{
return Find(string.Format(" {0} = '{1}' ", field, prop)); } public static bool Exist(string field, string prop)
{
int n = Count(field, prop);
return n > 0 ? true : false;
} public static int Count(string where)
{
string sql = string.Format("SELECT COUNT(1) FROM <#=table.TableName#> WHERE {0}", where);
DataTable table = DBHelper.GetDateTable(sql);
return Convert.ToInt32(table.Rows[0][0]);
} public static int Count(string field, string prop)
{
return Count(string.Format(" {0} = '{1}' ", field, prop));
} public static int Count()
{
return Count(" 1 = 1 ");
} public static List<<#=tableName#>> Find(int index, int size, ref int count)
{
count = Count(" 1 = 1 ");
string sql = string.Format(" 1 = 1 Order by id desc LIMIT {0}, {1} ", index * size , size);
return Find(sql);
} public static List<<#=tableName#>> Find(string field, string prop, int index, int size, ref int count)
{
count = Count(field, prop);
string sql = string.Format(" {0} = {1} Order by id desc LIMIT {2}, {3} ", field, prop, index, size);
return Find(sql);
}
} <#}#>
} <#+
class config
{
public static readonly string ConnectionString = "Server=127.0.0.1;Database=toolsite;Uid=root;Pwd=root;";
public static readonly string DbDatabase = "toolsite";
}
#>
你须要改的是最后那个文件的这个位置
class config
{
public static readonly string ConnectionString = "Server=127.0.0.1;Database=toolsite;Uid=root;Pwd=root;";
public static readonly string DbDatabase = "toolsite";
}
怎么改我相信你懂的,点击下保存,你的实体类,跟数据库操作就生成了
最后生成的代码是这样子的,还是蛮粗糙的,假设你愿意改改,我相信会更好的!!!
using System;
using MySql.Data.MySqlClient;
using System.Data;
using System.Collections.Generic;
namespace ToolSite.Entity
{
public class Config
{
public static string DefaultDb = "toolsite";
public static string ConnStr = "Server=127.0.0.1;Database=toolsite;Uid=root;Pwd=root;";
} public partial class PageInfo
{
#region Field
/// <summary>
///
/// </summary>
public int Id { get; set; }
/// <summary>
///
/// </summary>
public int SiteId { get; set; }
/// <summary>
///
/// </summary>
public int ParentId { get; set; }
/// <summary>
///
/// </summary>
public string FileName { get; set; }
/// <summary>
///
/// </summary>
public string Content { get; set; }
/// <summary>
///
/// </summary>
public string Title { get; set; }
/// <summary>
///
/// </summary>
public string Keywords { get; set; }
/// <summary>
///
/// </summary>
public string Description { get; set; }
/// <summary>
///
/// </summary>
public string H1 { get; set; }
#endregion public int Save()
{
MySqlParameter[] paras = new MySqlParameter[] {
new MySqlParameter("site_id", this.SiteId),
new MySqlParameter("parent_id", this.ParentId),
new MySqlParameter("file_name", this.FileName),
new MySqlParameter("content", this.Content),
new MySqlParameter("title", this.Title),
new MySqlParameter("keywords", this.Keywords),
new MySqlParameter("description", this.Description),
new MySqlParameter("h1", this.H1)
}; string sql = "INSERT INTO page_info(site_id, parent_id, file_name, content, title, keywords, description, h1) VALUES(?site_id, ?parent_id, ?file_name, ?content, ?title, ?keywords, ?description, ?h1)";
return DBHelper.NoneQuery(sql, paras);
} public int Update()
{ MySqlParameter[] paras = new MySqlParameter[] {
new MySqlParameter("id", this.Id),
new MySqlParameter("site_id", this.SiteId),
new MySqlParameter("parent_id", this.ParentId),
new MySqlParameter("file_name", this.FileName),
new MySqlParameter("content", this.Content),
new MySqlParameter("title", this.Title),
new MySqlParameter("keywords", this.Keywords),
new MySqlParameter("description", this.Description),
new MySqlParameter("h1", this.H1)
}; string sql = "UPDATE page_info SET site_id = ?site_id, parent_id = ?parent_id, file_name = ?file_name, content = ?content, title = ?title, keywords = ?keywords, description = ?description, h1 = ?h1 WHERE id = ?id";
return DBHelper.NoneQuery(sql, paras); } public static int Delete(int id)
{
string sql = string.Format("DELETE FROM page_info WHERE id = {0}", id);
return DBHelper.NoneQuery(sql); } public static PageInfo GetById(int id)
{
string sql = string.Format("SELECT * FROM page_info WHERE id = {0}", id);
DataTable table = DBHelper.GetDateTable(sql);
List<PageInfo> list = new DatatableFill<PageInfo>().FillModel(table);
//List<PageInfo> list = Mapper.DynamicMap<IDataReader, List<PageInfo>>(table.CreateDataReader());
if (list == null || list.Count == 0) return null;
return list[0];
} public static List<PageInfo> GetList()
{
string sql = "SELECT * FROM page_info";
DataTable table = DBHelper.GetDateTable(sql);
List<PageInfo> list = new DatatableFill<PageInfo>().FillModel(table);
//List<PageInfo> list = Mapper.DynamicMap<IDataReader, List<PageInfo>>(table.CreateDataReader());
return list; } public static List<PageInfo> Find(string where)
{
string sql = string.Format("SELECT * FROM page_info WHERE {0};", where);
DataTable table = DBHelper.GetDateTable(sql);
return new DatatableFill<PageInfo>().FillModel(table);
} public static List<PageInfo> Find(string field, string prop)
{
return Find(string.Format(" {0} = '{1}' ", field, prop)); } public static bool Exist(string field, string prop)
{
int n = Count(field, prop);
return n > 0 ? true : false;
} public static int Count(string where)
{
string sql = string.Format("SELECT COUNT(1) FROM page_info WHERE {0}", where);
DataTable table = DBHelper.GetDateTable(sql);
return Convert.ToInt32(table.Rows[0][0]);
} public static int Count(string field, string prop)
{
return Count(string.Format(" {0} = '{1}' ", field, prop));
} public static int Count()
{
return Count(" 1 = 1 ");
} public static List<PageInfo> Find(int index, int size, ref int count)
{
count = Count(" 1 = 1 ");
string sql = string.Format(" 1 = 1 Order by id desc LIMIT {0}, {1} ", index * size , size);
return Find(sql);
} public static List<PageInfo> Find(string field, string prop, int index, int size, ref int count)
{
count = Count(field, prop);
string sql = string.Format(" {0} = {1} Order by id desc LIMIT {2}, {3} ", field, prop, index, size);
return Find(sql);
}
} public partial class SiteInfo
{
#region Field
/// <summary>
///
/// </summary>
public int Id { get; set; }
/// <summary>
///
/// </summary>
public string Name { get; set; }
/// <summary>
///
/// </summary>
public string Template { get; set; }
#endregion public int Save()
{
MySqlParameter[] paras = new MySqlParameter[] {
new MySqlParameter("name", this.Name),
new MySqlParameter("template", this.Template)
}; string sql = "INSERT INTO site_info(name, template) VALUES(?name, ?template)";
return DBHelper.NoneQuery(sql, paras);
} public int Update()
{ MySqlParameter[] paras = new MySqlParameter[] {
new MySqlParameter("id", this.Id),
new MySqlParameter("name", this.Name),
new MySqlParameter("template", this.Template)
}; string sql = "UPDATE site_info SET name = ?name, template = ?template WHERE id = ?id";
return DBHelper.NoneQuery(sql, paras); } public static int Delete(int id)
{
string sql = string.Format("DELETE FROM site_info WHERE id = {0}", id);
return DBHelper.NoneQuery(sql); } public static SiteInfo GetById(int id)
{
string sql = string.Format("SELECT * FROM site_info WHERE id = {0}", id);
DataTable table = DBHelper.GetDateTable(sql);
List<SiteInfo> list = new DatatableFill<SiteInfo>().FillModel(table);
//List<SiteInfo> list = Mapper.DynamicMap<IDataReader, List<SiteInfo>>(table.CreateDataReader());
if (list == null || list.Count == 0) return null;
return list[0];
} public static List<SiteInfo> GetList()
{
string sql = "SELECT * FROM site_info";
DataTable table = DBHelper.GetDateTable(sql);
List<SiteInfo> list = new DatatableFill<SiteInfo>().FillModel(table);
//List<SiteInfo> list = Mapper.DynamicMap<IDataReader, List<SiteInfo>>(table.CreateDataReader());
return list; } public static List<SiteInfo> Find(string where)
{
string sql = string.Format("SELECT * FROM site_info WHERE {0};", where);
DataTable table = DBHelper.GetDateTable(sql);
return new DatatableFill<SiteInfo>().FillModel(table);
} public static List<SiteInfo> Find(string field, string prop)
{
return Find(string.Format(" {0} = '{1}' ", field, prop)); } public static bool Exist(string field, string prop)
{
int n = Count(field, prop);
return n > 0 ? true : false;
} public static int Count(string where)
{
string sql = string.Format("SELECT COUNT(1) FROM site_info WHERE {0}", where);
DataTable table = DBHelper.GetDateTable(sql);
return Convert.ToInt32(table.Rows[0][0]);
} public static int Count(string field, string prop)
{
return Count(string.Format(" {0} = '{1}' ", field, prop));
} public static int Count()
{
return Count(" 1 = 1 ");
} public static List<SiteInfo> Find(int index, int size, ref int count)
{
count = Count(" 1 = 1 ");
string sql = string.Format(" 1 = 1 Order by id desc LIMIT {0}, {1} ", index * size , size);
return Find(sql);
} public static List<SiteInfo> Find(string field, string prop, int index, int size, ref int count)
{
count = Count(field, prop);
string sql = string.Format(" {0} = {1} Order by id desc LIMIT {2}, {3} ", field, prop, index, size);
return Find(sql);
}
} }
T4 生成实体和简单的CRUD操作的更多相关文章
- T4生成实体和简单的CRUD操作
主要跟大家交流下T4,我这里针对的是mysql,我本人比较喜欢用mysql,所以语法针对mysql,所以你要准备mysql的DLL了,同理sqlserver差不多,有兴趣可以自己写写,首先网上找了一个 ...
- 8天掌握EF的Code First开发系列之2 简单的CRUD操作
本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...
- ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作
前言: 本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例.关于 ...
- 【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作
这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先,我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; ...
- hibernate入门-基本配置及简单的crud操作
框架来说主要是需要写大量的配置文件,hibernate相比mybatis来说更强大,移植性更好: 1.类和数据库的映射配置:配置文件命名一般--类名.hbm.xml (user.hbm.xml),与实 ...
- 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法
由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...
- T4生成实体,单张表和多张表
# 使用说明 . 把T4目录放在项目的根目录 . 配置连接字符串,在tt文件的最底部 . generateAllEntity.tt生成全部的实体类 . generateSingleEntityByNa ...
- Spring Data MongoDB 一:入门篇(环境搭建、简单的CRUD操作)
一.简介 Spring Data MongoDB 项目提供与MongoDB文档数据库的集成.Spring Data MongoDB POJO的关键功能区域为中心的模型与MongoDB的DBColle ...
- elasticsearch入门(简单的crud操作)
记录一下,elasticsearch从创建索引到插入数据的一个crud操作. 一.创建索引 curl -XPUT "http://192.168.99.1:9200/productindex ...
随机推荐
- JavaScript 三个常用对话框
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Server sent passive reply with unroutable address. Using server address instead
最近在linux服务器安装vsftp服务.经过一轮设置,终于可以连接上了,用winSCP连接,刷新目录就提示这个错误. 解决办法: vim /etc/vsftpd.conf ,编辑配置文件,最后加上 ...
- 001 Java 深拷贝、浅拷贝及Cloneable接口
原本写过,后来在阅读的时候,感觉自己都不是太明白了,删除后参考人家的又重新写了一份. 一:开篇 1.复制一个变量 举例是int类型. 其他其中七种原始数据类型同样适用. 原始类型:boolean,ch ...
- js 参数传递
最近在读<javascript高级程序设计>时碰到了js传递方式的问题,花费了些时间,不过总算明白了. 数据类型 在 javascript 中数据类型可以分为两类: 基本类型值 primi ...
- 全文搜索引擎 Elasticsearch (二) 使用场景
1.场景—:使用Elasticsearch作为主要的后端 传统项目中,搜索引擎是部署在成熟的数据存储的顶部,以提供快速且相关的搜索能力.这是因为早期的搜索引擎不能提供耐用的存储或其他经常需要的功能 ...
- Ionic Js十三:平台
$ionicPlatform $ionicPlatform 用来检测当前的平台,以及诸如在PhoneGap/Cordova中覆盖Android后退按钮.  
- 20169211《Linux内核原理及分析》第十二周作业
Collabtive 系统 SQL 注入实验 实验介绍 SQL注入漏洞的代码注入技术,利用web应用程序和数据库服务器之间的接口.通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串, ...
- Adobe Audition CC 2017 (10.0)安装教程
Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...
- maven 发布jar包到远程仓库
有的时候我们需要发布一些自己写的相关jar包到maven私服,供项目组使用. 首先在setting.xml文件添加,这里 注意 要保证该账户有发布的权限 <servers> <ser ...
- 概率论中常见分布总结以及python的scipy库使用:两点分布、二项分布、几何分布、泊松分布、均匀分布、指数分布、正态分布
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布. 离散概率分布也称为概率质量函数(probability mass function).离散概率分布的例子有 ...