//常用名称空间
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
 
//Class 
namespace gg
{       
 //表名添加前缀做类名
     public class thinUser
     {
 
         //字段名 其中id是自增列
         public const string FIELD_ID="ID";
         public const string FIELD_NAME="Name";
          
 //添加、修改、删除sql
         public const string SQL_UserInsert ="INSERT INTO aa (Name) VALUES (@Name);SELECT SCOPE_IDENTITY() ";
         public const string SQL_UserUpdate ="UPDATE aa SET Name = @Name WHERE ID = @ID";
         public const string SQL_UserDelete ="DELETE FROM aa WHERE ID = @ID";
 
        //调用级联删除的SQL,此处需要自行维护
        public const string SQL_UserDeleteCascade = "";、  //变量,没有采用属性方式,而是直接用public,可以改成属性方式访问
         public int m_ID;
         public string m_Name = "";
     }  public partial class RunTime
  {
public bool UpdateUser(thinUser needUpdateUser, bool blnUpdate, out string msg)
{
SqlCommand sqlcmd = GetUserCommand(needUpdateUser, blnUpdate);
bool result = ExecCommand(sqlcmd, out msg, blnUpdate);
//新增操作并且操作成功
if (!blnUpdate && result)
{
 needUpdateUser.m_ID = Convert.ToInt32(msg);
 }
 return result;
} public bool UpdateUser(thinUser needUpdateUser, bool blnUpdate, out string msg, IDbTransaction sqlTran)
{
SqlCommand sqlcmd = GetUserCommand(needUpdateUser, blnUpdate);
sqlcmd.Transaction = sqlTran as SqlTransaction;
bool result = ExecCommand(sqlcmd, out msg, blnUpdate);
//新增操作并且操作成功
if (!blnUpdate && result)
{
 needUpdateUser.m_ID = Convert.ToInt32(msg);
 }
 return result;
}    private SqlCommand GetUserCommand(thinUser needUpdateUser, bool blnUpdate)
{
//获取更新Division的SQL语句
string strUpdate = string.Empty;
//根据状态获取SQL语句
if (blnUpdate)
   strUpdate = thinUser.SQL_UserUpdate;//更新SQL
else
   strUpdate = thinUser.SQL_UserInsert;//删除SQL
//构造命令对像
SqlCommand sqlcmd = new SqlCommand(strUpdate);
//名称参数
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_NAME, needUpdateUser.m_Name)); //更新操作时需要添加ID参数,主键
if (blnUpdate)
{
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_ID, needUpdateUser.m_ID));
}
return sqlcmd;
} private SqlCommand GetUserDeleteCommand(thinUser needDelUser)
{
//获取删除Division的SQL语句
string strDelete = string.Empty;
strDelete = thinUser.SQL_UserDelete;//删除SQL
//判断该数据类型是否被传感器类型引用
//comm.Comm.ToDecimalif (
//构造命令对像
SqlCommand sqlcmd = new SqlCommand(strDelete);
sqlcmd.Parameters.Add(new SqlParameter("@" + thinUser.FIELD_ID, needDelUser.m_ID));
return sqlcmd;
}  public bool DeleteUser(thinUser needDelUser, out string msg)
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
return ExecCommand(sqlcmd, out msg, false);
 }  public bool DeleteUser(thinUser needDelUser, out string msg, IDbTransaction sqlTran)
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.Transaction = sqlTran as SqlTransaction;
return ExecCommand(sqlcmd, out msg, false);
 }  public bool DeleteUserCascade(thinUser needDelUser, out string msg)
{
if (thinUser.SQL_UserDeleteCascade.Length == 0)
{
 msg = "";
 return true;
}
else
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.CommandText = thinUser.SQL_UserDeleteCascade;//删除SQL
return ExecCommand(sqlcmd, out msg, false);
}
 }  public bool DeleteUserCascade(thinUser needDelUser, out string msg, IDbTransaction sqlTran)
{
if (thinUser.SQL_UserDeleteCascade.Length == 0)
{
 msg = "";
 return true;
}
else
{
SqlCommand sqlcmd = GetUserDeleteCommand(needDelUser);
sqlcmd.CommandText = thinUser.SQL_UserDeleteCascade;//删除SQL
sqlcmd.Transaction = sqlTran as SqlTransaction;
return ExecCommand(sqlcmd, out msg, false);
 }
 }    } 
} =====解释说明
代码是自己写的生成工具写的,用于操作一张表的,表主要用于sql server的自增表,自增列通常为id或者fid,我这里是按照id来算,如果实际应用中可以指定其他列,主要是一个新增的主键返回问题。第一部分为为表的影射,以及根据字段自动生成update、insert、delete、以及deletecascase用于级联删除操作。
本来应该将new和update分开的,结果只有在传入参数的时候判断一下,合并了。每个update和delete方法都有重载idbtransaction的,用于控制事务ExecCommand,主要就是执行命令。,如果传入的sqlcmd不包含事务信息,则打开数据连结,否则使用事务信息的连接, 事务的话在调用之前new一个传入,是IDBTranScation类型各位觉得这个类怎么样?欢迎讨论