using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
using AIMSModel;
using AIMSObjectQuery;
using System.Collections.Generic;
using DrawGraph;
namespace AIMSDAL
{
    internal partial class DOperationRecord
    {
        #region 插入实体操作部份
        /// 
        /// 插入
        /// 
        /// Command对象
        /// 实体类对象
        /// 标识列值或影响的记录行数
        internal static int Insert(SqlCommand cmd, OperationRecord operationRecord)
        {
            cmd.Parameters.Clear();
            cmd.CommandText = "insert into OperationRecord (PatientId,OperationApplyId,InRoomTime,OutRoomTime,OperationBeginTime,OperationEndTime,AnesthesiaBeginTime,AnesthesiaEndTime,ASALevel,SpecialCase,Fasting,BloodType,OperationDate,OpeSpecialCondition,BMI,BeforeDrugs,AnaesthesiaMethodName,AnaesthesiaTechnology,AnaesthesiaComplication,SpecialEvent,SuddenSituation,ConditionChage,RescueMeasures,RescueTime,RescuePerson,RescueTechnology,SpileInTime,SpileOutTime,SpileSituation,SpileWard,SpileBeforCondition,SpileAffterCondition,RefluxFlag,MuscleStrengthRecovery,CoughReflex,InOperaRoomState,BloodPressure,Tempeture,Pulse,Breath,IsolationIndicator,AnesMachine,ControlledAnalgesia,AnalgesiaModel,AnalgesiaRate,AnalgesiaDrug,AldreteScore,RouteMonitoring,Entourage,Remark1,Remark2,Remark3,Crystal,Colloid,InAmount,OutAmount,OperationTimeSpan,AnaesthesiaTimeSpan,RoomTimeSpan,AnesthesiaDoctorTimeMinute,anesthesiaDoctorSucceedTimeMinute,instrumentNurseTimeMinute,instrumentNurseSucceedTimeMinute,tourNurseTimeMinute,tourNurseSucceedTimeMinute,RecordPageCount,SignName,SignTime,RoomId,State,RecoverId,OperatorNo,OperatorName,OperateDate,Remarks) values (@PatientId,@OperationApplyId,@InRoomTime,@OutRoomTime,@OperationBeginTime,@OperationEndTime,@AnesthesiaBeginTime,@AnesthesiaEndTime,@ASALevel,@SpecialCase,@Fasting,@BloodType,@OperationDate,@OpeSpecialCondition,@BMI,@BeforeDrugs,@AnaesthesiaMethodName,@AnaesthesiaTechnology,@AnaesthesiaComplication,@SpecialEvent,@SuddenSituation,@ConditionChage,@RescueMeasures,@RescueTime,@RescuePerson,@RescueTechnology,@SpileInTime,@SpileOutTime,@SpileSituation,@SpileWard,@SpileBeforCondition,@SpileAffterCondition,@RefluxFlag,@MuscleStrengthRecovery,@CoughReflex,@InOperaRoomState,@BloodPressure,@Tempeture,@Pulse,@Breath,@IsolationIndicator,@AnesMachine,@ControlledAnalgesia,@AnalgesiaModel,@AnalgesiaRate,@AnalgesiaDrug,@AldreteScore,@RouteMonitoring,@Entourage,@Remark1,@Remark2,@Remark3,@Crystal,@Colloid,@InAmount,@OutAmount,@OperationTimeSpan,@AnaesthesiaTimeSpan,@RoomTimeSpan,@AnesthesiaDoctorTimeMinute,@anesthesiaDoctorSucceedTimeMinute,@instrumentNurseTimeMinute,@instrumentNurseSucceedTimeMinute,@tourNurseTimeMinute,@tourNurseSucceedTimeMinute,@RecordPageCount,@SignName,@SignTime,@RoomId,@State,@RecoverId,@OperatorNo,@OperatorName,@OperateDate,@Remarks);select @@identity";
            //从实体中取出值放入Command的参数列表
            cmd.Parameters.Add(new SqlParameter("@PatientId", operationRecord.PatientId.HasValue ? (object)operationRecord.PatientId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperationApplyId", operationRecord.OperationApplyId.HasValue ? (object)operationRecord.OperationApplyId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@InRoomTime", operationRecord.InRoomTime.HasValue ? (object)operationRecord.InRoomTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OutRoomTime", operationRecord.OutRoomTime.HasValue ? (object)operationRecord.OutRoomTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperationBeginTime", operationRecord.OperationBeginTime.HasValue ? (object)operationRecord.OperationBeginTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperationEndTime", operationRecord.OperationEndTime.HasValue ? (object)operationRecord.OperationEndTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@AnesthesiaBeginTime", operationRecord.AnesthesiaBeginTime.HasValue ? (object)operationRecord.AnesthesiaBeginTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@AnesthesiaEndTime", operationRecord.AnesthesiaEndTime.HasValue ? (object)operationRecord.AnesthesiaEndTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@ASALevel", operationRecord.ASALevel.HasValue ? (object)operationRecord.ASALevel.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@SpecialCase", operationRecord.SpecialCase == null ? (object)DBNull.Value : (object)operationRecord.SpecialCase));
            cmd.Parameters.Add(new SqlParameter("@Fasting", operationRecord.Fasting == null ? (object)DBNull.Value : (object)operationRecord.Fasting));
            cmd.Parameters.Add(new SqlParameter("@BloodType", operationRecord.BloodType == null ? (object)DBNull.Value : (object)operationRecord.BloodType));
            cmd.Parameters.Add(new SqlParameter("@OperationDate", operationRecord.OperationDate == null ? (object)DBNull.Value : (object)operationRecord.OperationDate));
            cmd.Parameters.Add(new SqlParameter("@OpeSpecialCondition", operationRecord.OpeSpecialCondition == null ? (object)DBNull.Value : (object)operationRecord.OpeSpecialCondition));
            cmd.Parameters.Add(new SqlParameter("@BMI", operationRecord.BMI == null ? (object)DBNull.Value : (object)operationRecord.BMI));
            cmd.Parameters.Add(new SqlParameter("@BeforeDrugs", operationRecord.BeforeDrugs == null ? (object)DBNull.Value : (object)operationRecord.BeforeDrugs));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaMethodName", operationRecord.AnaesthesiaMethodName == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaMethodName));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaTechnology", operationRecord.AnaesthesiaTechnology == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaTechnology));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaComplication", operationRecord.AnaesthesiaComplication == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaComplication));
            cmd.Parameters.Add(new SqlParameter("@SpecialEvent", operationRecord.SpecialEvent == null ? (object)DBNull.Value : (object)operationRecord.SpecialEvent));
            cmd.Parameters.Add(new SqlParameter("@SuddenSituation", operationRecord.SuddenSituation == null ? (object)DBNull.Value : (object)operationRecord.SuddenSituation));
            cmd.Parameters.Add(new SqlParameter("@ConditionChage", operationRecord.ConditionChage == null ? (object)DBNull.Value : (object)operationRecord.ConditionChage));
            cmd.Parameters.Add(new SqlParameter("@RescueMeasures", operationRecord.RescueMeasures == null ? (object)DBNull.Value : (object)operationRecord.RescueMeasures));
            cmd.Parameters.Add(new SqlParameter("@RescueTime", operationRecord.RescueTime == null ? (object)DBNull.Value : (object)operationRecord.RescueTime));
            cmd.Parameters.Add(new SqlParameter("@RescuePerson", operationRecord.RescuePerson == null ? (object)DBNull.Value : (object)operationRecord.RescuePerson));
            cmd.Parameters.Add(new SqlParameter("@RescueTechnology", operationRecord.RescueTechnology == null ? (object)DBNull.Value : (object)operationRecord.RescueTechnology));
            cmd.Parameters.Add(new SqlParameter("@SpileInTime", operationRecord.SpileInTime.HasValue ? (object)operationRecord.SpileInTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@SpileOutTime", operationRecord.SpileOutTime.HasValue ? (object)operationRecord.SpileOutTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@SpileSituation", operationRecord.SpileSituation == null ? (object)DBNull.Value : (object)operationRecord.SpileSituation));
            cmd.Parameters.Add(new SqlParameter("@SpileWard", operationRecord.SpileWard == null ? (object)DBNull.Value : (object)operationRecord.SpileWard));
            cmd.Parameters.Add(new SqlParameter("@SpileBeforCondition", operationRecord.SpileBeforCondition == null ? (object)DBNull.Value : (object)operationRecord.SpileBeforCondition));
            cmd.Parameters.Add(new SqlParameter("@SpileAffterCondition", operationRecord.SpileAffterCondition == null ? (object)DBNull.Value : (object)operationRecord.SpileAffterCondition));
            cmd.Parameters.Add(new SqlParameter("@RefluxFlag", operationRecord.RefluxFlag == null ? (object)DBNull.Value : (object)operationRecord.RefluxFlag));
            cmd.Parameters.Add(new SqlParameter("@MuscleStrengthRecovery", operationRecord.MuscleStrengthRecovery == null ? (object)DBNull.Value : (object)operationRecord.MuscleStrengthRecovery));
            cmd.Parameters.Add(new SqlParameter("@CoughReflex", operationRecord.CoughReflex == null ? (object)DBNull.Value : (object)operationRecord.CoughReflex));
            cmd.Parameters.Add(new SqlParameter("@InOperaRoomState", operationRecord.InOperaRoomState == null ? (object)DBNull.Value : (object)operationRecord.InOperaRoomState));
            cmd.Parameters.Add(new SqlParameter("@BloodPressure", operationRecord.BloodPressure == null ? (object)DBNull.Value : (object)operationRecord.BloodPressure));
            cmd.Parameters.Add(new SqlParameter("@Tempeture", operationRecord.Tempeture == null ? (object)DBNull.Value : (object)operationRecord.Tempeture));
            cmd.Parameters.Add(new SqlParameter("@Pulse", operationRecord.Pulse == null ? (object)DBNull.Value : (object)operationRecord.Pulse));
            cmd.Parameters.Add(new SqlParameter("@Breath", operationRecord.Breath == null ? (object)DBNull.Value : (object)operationRecord.Breath));
            cmd.Parameters.Add(new SqlParameter("@IsolationIndicator", operationRecord.IsolationIndicator == null ? (object)DBNull.Value : (object)operationRecord.IsolationIndicator));
            cmd.Parameters.Add(new SqlParameter("@AnesMachine", operationRecord.AnesMachine == null ? (object)DBNull.Value : (object)operationRecord.AnesMachine));
            cmd.Parameters.Add(new SqlParameter("@ControlledAnalgesia", operationRecord.ControlledAnalgesia == null ? (object)DBNull.Value : (object)operationRecord.ControlledAnalgesia));
            cmd.Parameters.Add(new SqlParameter("@AnalgesiaModel", operationRecord.AnalgesiaModel == null ? (object)DBNull.Value : (object)operationRecord.AnalgesiaModel));
            cmd.Parameters.Add(new SqlParameter("@AnalgesiaRate", operationRecord.AnalgesiaRate == null ? (object)DBNull.Value : (object)operationRecord.AnalgesiaRate));
            cmd.Parameters.Add(new SqlParameter("@AnalgesiaDrug", operationRecord.AnalgesiaDrug == null ? (object)DBNull.Value : (object)operationRecord.AnalgesiaDrug));
            cmd.Parameters.Add(new SqlParameter("@AldreteScore", operationRecord.AldreteScore == null ? (object)DBNull.Value : (object)operationRecord.AldreteScore));
            cmd.Parameters.Add(new SqlParameter("@RouteMonitoring", operationRecord.RouteMonitoring == null ? (object)DBNull.Value : (object)operationRecord.RouteMonitoring));
            cmd.Parameters.Add(new SqlParameter("@Entourage", operationRecord.Entourage == null ? (object)DBNull.Value : (object)operationRecord.Entourage));
            cmd.Parameters.Add(new SqlParameter("@Remark1", operationRecord.Remark1 == null ? (object)DBNull.Value : (object)operationRecord.Remark1));
            cmd.Parameters.Add(new SqlParameter("@Remark2", operationRecord.Remark2 == null ? (object)DBNull.Value : (object)operationRecord.Remark2));
            cmd.Parameters.Add(new SqlParameter("@Remark3", operationRecord.Remark3 == null ? (object)DBNull.Value : (object)operationRecord.Remark3));
            cmd.Parameters.Add(new SqlParameter("@Crystal", operationRecord.Crystal == null ? (object)DBNull.Value : (object)operationRecord.Crystal));
            cmd.Parameters.Add(new SqlParameter("@Colloid", operationRecord.Colloid == null ? (object)DBNull.Value : (object)operationRecord.Colloid));
            cmd.Parameters.Add(new SqlParameter("@InAmount", operationRecord.InAmount == null ? (object)DBNull.Value : (object)operationRecord.InAmount));
            cmd.Parameters.Add(new SqlParameter("@OutAmount", operationRecord.OutAmount == null ? (object)DBNull.Value : (object)operationRecord.OutAmount));
            cmd.Parameters.Add(new SqlParameter("@OperationTimeSpan", operationRecord.OperationTimeSpan == null ? (object)DBNull.Value : (object)operationRecord.OperationTimeSpan));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaTimeSpan", operationRecord.AnaesthesiaTimeSpan == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaTimeSpan));
            cmd.Parameters.Add(new SqlParameter("@RoomTimeSpan", operationRecord.RoomTimeSpan == null ? (object)DBNull.Value : (object)operationRecord.RoomTimeSpan));
            cmd.Parameters.Add(new SqlParameter("@AnesthesiaDoctorTimeMinute", operationRecord.AnesthesiaDoctorTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.AnesthesiaDoctorTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@anesthesiaDoctorSucceedTimeMinute", operationRecord.AnesthesiaDoctorSucceedTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.AnesthesiaDoctorSucceedTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@instrumentNurseTimeMinute", operationRecord.InstrumentNurseTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.InstrumentNurseTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@instrumentNurseSucceedTimeMinute", operationRecord.InstrumentNurseSucceedTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.InstrumentNurseSucceedTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@tourNurseTimeMinute", operationRecord.TourNurseTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.TourNurseTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@tourNurseSucceedTimeMinute", operationRecord.TourNurseSucceedTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.TourNurseSucceedTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@RecordPageCount", operationRecord.RecordPageCount == null ? (object)DBNull.Value : (object)operationRecord.RecordPageCount));
            cmd.Parameters.Add(new SqlParameter("@SignName", operationRecord.SignName == null ? (object)DBNull.Value : (object)operationRecord.SignName));
            cmd.Parameters.Add(new SqlParameter("@SignTime", operationRecord.SignTime == null ? (object)DBNull.Value : (object)operationRecord.SignTime));
            cmd.Parameters.Add(new SqlParameter("@RoomId", operationRecord.RoomId.HasValue ? (object)operationRecord.RoomId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@State", operationRecord.State.HasValue ? (object)operationRecord.State.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@RecoverId", operationRecord.RecoverId.HasValue ? (object)operationRecord.RecoverId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperatorNo", operationRecord.OperatorNo == null ? (object)DBNull.Value : (object)operationRecord.OperatorNo));
            cmd.Parameters.Add(new SqlParameter("@OperatorName", operationRecord.OperatorName == null ? (object)DBNull.Value : (object)operationRecord.OperatorName));
            cmd.Parameters.Add(new SqlParameter("@OperateDate", operationRecord.OperateDate.HasValue ? (object)operationRecord.OperateDate.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@Remarks", operationRecord.Remarks == null ? (object)DBNull.Value : (object)operationRecord.Remarks));
            return Convert.ToInt32(cmd.ExecuteScalar());
        }
        /// 
        /// 不使用事务的插入方法
        /// 
        /// 实体类对象
        /// 标识列值或影响的记录行数
        internal static int Insert(OperationRecord operationRecord)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return Insert(cmd, operationRecord);
                }
            }
        }
        /// 
        /// 使用事务的插入方法
        /// 
        /// 实现共享Connection的对象
        /// 实体类对象
        /// 标识列值或影响的记录行数
        internal static int Insert(Connection connection, OperationRecord operationRecord)
        {
            return Insert(connection.Command, operationRecord);
        }
        #endregion
        #region 删除实体操作
        /// 
        /// 删除
        /// 
        /// Command对象
        /// 实体类对象
        /// 影响的记录行数
        internal static int ExcuteDeleteCommand(SqlCommand cmd, OperationRecord operationRecord)
        {
            cmd.Parameters.Clear();
            cmd.CommandText = "delete from OperationRecord where Id=@Id";
            //从实体中取出值放入Command的参数列表
            cmd.Parameters.Add(new SqlParameter("@Id", operationRecord.Id));
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的删除方法
        /// 
        /// 实体类对象
        /// 影响的记录行数
        internal static int Delete(OperationRecord operationRecord)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteDeleteCommand(cmd, operationRecord);
                }
            }
        }
        /// 
        /// 使用事务的删除方法
        /// 
        /// 实现共享Connection的对象
        /// 实体类对象
        /// 影响的记录行数
        internal static int Delete(Connection connection, OperationRecord operationRecord)
        {
            return ExcuteDeleteCommand(connection.Command, operationRecord);
        }
        /// 
        /// 执行删除命令
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        internal static int ExcuteDeleteCommand(SqlCommand cmd, string oql, ParameterList parameters)
        {
            //解析过滤部份Sql语句
            string filterString = SyntaxAnalyzer.ParseSql(oql, new OperationRecordMap());
            if (filterString != string.Empty)
            {
                filterString = " where " + filterString;
            }
            cmd.Parameters.Clear();
            cmd.CommandText = "delete from OperationRecord " + filterString;
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的删除方法
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        internal static int Delete(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteDeleteCommand(cmd, oql, parameters);
                }
            }
        }
        /// 
        /// 使用事务的删除方法
        /// 
        /// 实现共享Connection的对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        internal static int Delete(Connection connection, string oql, ParameterList parameters)
        {
            return ExcuteDeleteCommand(connection.Command, oql, parameters);
        }
        #endregion
        #region 更新实体操作
        /// 
        /// 更新
        /// 
        /// Command对象
        /// 实体类对象
        /// 影响的记录行数
        internal static int ExcuteUpdateCommand(SqlCommand cmd, OperationRecord operationRecord)
        {
            cmd.CommandText = "update OperationRecord set PatientId=@PatientId,OperationApplyId=@OperationApplyId,InRoomTime=@InRoomTime,OutRoomTime=@OutRoomTime,OperationBeginTime=@OperationBeginTime,OperationEndTime=@OperationEndTime,AnesthesiaBeginTime=@AnesthesiaBeginTime,AnesthesiaEndTime=@AnesthesiaEndTime,ASALevel=@ASALevel,SpecialCase=@SpecialCase,Fasting=@Fasting,BloodType=@BloodType,OperationDate=@OperationDate,OpeSpecialCondition=@OpeSpecialCondition,BMI=@BMI,BeforeDrugs=@BeforeDrugs,AnaesthesiaMethodName=@AnaesthesiaMethodName,AnaesthesiaTechnology=@AnaesthesiaTechnology,AnaesthesiaComplication=@AnaesthesiaComplication,SpecialEvent=@SpecialEvent,SuddenSituation=@SuddenSituation,ConditionChage=@ConditionChage,RescueMeasures=@RescueMeasures,RescueTime=@RescueTime,RescuePerson=@RescuePerson,RescueTechnology=@RescueTechnology,SpileInTime=@SpileInTime,SpileOutTime=@SpileOutTime,SpileSituation=@SpileSituation,SpileWard=@SpileWard,SpileBeforCondition=@SpileBeforCondition,SpileAffterCondition=@SpileAffterCondition,RefluxFlag=@RefluxFlag,MuscleStrengthRecovery=@MuscleStrengthRecovery,CoughReflex=@CoughReflex,InOperaRoomState=@InOperaRoomState,BloodPressure=@BloodPressure,Tempeture=@Tempeture,Pulse=@Pulse,Breath=@Breath,IsolationIndicator=@IsolationIndicator,AnesMachine=@AnesMachine,ControlledAnalgesia=@ControlledAnalgesia,AnalgesiaModel=@AnalgesiaModel,AnalgesiaRate=@AnalgesiaRate,AnalgesiaDrug=@AnalgesiaDrug,AldreteScore=@AldreteScore,RouteMonitoring=@RouteMonitoring,Entourage=@Entourage,Remark1=@Remark1,Remark2=@Remark2,Remark3=@Remark3,Crystal=@Crystal,Colloid=@Colloid,InAmount=@InAmount,OutAmount=@OutAmount,OperationTimeSpan=@OperationTimeSpan,AnaesthesiaTimeSpan=@AnaesthesiaTimeSpan,RoomTimeSpan=@RoomTimeSpan,AnesthesiaDoctorTimeMinute=@AnesthesiaDoctorTimeMinute,anesthesiaDoctorSucceedTimeMinute=@anesthesiaDoctorSucceedTimeMinute,instrumentNurseTimeMinute=@instrumentNurseTimeMinute,instrumentNurseSucceedTimeMinute=@instrumentNurseSucceedTimeMinute,tourNurseTimeMinute=@tourNurseTimeMinute,tourNurseSucceedTimeMinute=@tourNurseSucceedTimeMinute,RecordPageCount=@RecordPageCount,SignName=@SignName,SignTime=@SignTime,RoomId=@RoomId,State=@State,RecoverId=@RecoverId,OperatorNo=@OperatorNo,OperatorName=@OperatorName,OperateDate=@OperateDate,Remarks=@Remarks where Id=@Id";
            //从实体中取出值放入Command的参数列表
            cmd.Parameters.Add(new SqlParameter("@PatientId", operationRecord.PatientId.HasValue ? (object)operationRecord.PatientId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperationApplyId", operationRecord.OperationApplyId.HasValue ? (object)operationRecord.OperationApplyId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@InRoomTime", operationRecord.InRoomTime.HasValue ? (object)operationRecord.InRoomTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OutRoomTime", operationRecord.OutRoomTime.HasValue ? (object)operationRecord.OutRoomTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperationBeginTime", operationRecord.OperationBeginTime.HasValue ? (object)operationRecord.OperationBeginTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperationEndTime", operationRecord.OperationEndTime.HasValue ? (object)operationRecord.OperationEndTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@AnesthesiaBeginTime", operationRecord.AnesthesiaBeginTime.HasValue ? (object)operationRecord.AnesthesiaBeginTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@AnesthesiaEndTime", operationRecord.AnesthesiaEndTime.HasValue ? (object)operationRecord.AnesthesiaEndTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@ASALevel", operationRecord.ASALevel.HasValue ? (object)operationRecord.ASALevel.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@SpecialCase", operationRecord.SpecialCase == null ? (object)DBNull.Value : (object)operationRecord.SpecialCase));
            cmd.Parameters.Add(new SqlParameter("@Fasting", operationRecord.Fasting == null ? (object)DBNull.Value : (object)operationRecord.Fasting));
            cmd.Parameters.Add(new SqlParameter("@BloodType", operationRecord.BloodType == null ? (object)DBNull.Value : (object)operationRecord.BloodType));
            cmd.Parameters.Add(new SqlParameter("@OperationDate", operationRecord.OperationDate == null ? (object)DBNull.Value : (object)operationRecord.OperationDate));
            cmd.Parameters.Add(new SqlParameter("@OpeSpecialCondition", operationRecord.OpeSpecialCondition == null ? (object)DBNull.Value : (object)operationRecord.OpeSpecialCondition));
            cmd.Parameters.Add(new SqlParameter("@BMI", operationRecord.BMI == null ? (object)DBNull.Value : (object)operationRecord.BMI));
            cmd.Parameters.Add(new SqlParameter("@BeforeDrugs", operationRecord.BeforeDrugs == null ? (object)DBNull.Value : (object)operationRecord.BeforeDrugs));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaMethodName", operationRecord.AnaesthesiaMethodName == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaMethodName));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaTechnology", operationRecord.AnaesthesiaTechnology == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaTechnology));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaComplication", operationRecord.AnaesthesiaComplication == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaComplication));
            cmd.Parameters.Add(new SqlParameter("@SpecialEvent", operationRecord.SpecialEvent == null ? (object)DBNull.Value : (object)operationRecord.SpecialEvent));
            cmd.Parameters.Add(new SqlParameter("@SuddenSituation", operationRecord.SuddenSituation == null ? (object)DBNull.Value : (object)operationRecord.SuddenSituation));
            cmd.Parameters.Add(new SqlParameter("@ConditionChage", operationRecord.ConditionChage == null ? (object)DBNull.Value : (object)operationRecord.ConditionChage));
            cmd.Parameters.Add(new SqlParameter("@RescueMeasures", operationRecord.RescueMeasures == null ? (object)DBNull.Value : (object)operationRecord.RescueMeasures));
            cmd.Parameters.Add(new SqlParameter("@RescueTime", operationRecord.RescueTime == null ? (object)DBNull.Value : (object)operationRecord.RescueTime));
            cmd.Parameters.Add(new SqlParameter("@RescuePerson", operationRecord.RescuePerson == null ? (object)DBNull.Value : (object)operationRecord.RescuePerson));
            cmd.Parameters.Add(new SqlParameter("@RescueTechnology", operationRecord.RescueTechnology == null ? (object)DBNull.Value : (object)operationRecord.RescueTechnology));
            cmd.Parameters.Add(new SqlParameter("@SpileInTime", operationRecord.SpileInTime.HasValue ? (object)operationRecord.SpileInTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@SpileOutTime", operationRecord.SpileOutTime.HasValue ? (object)operationRecord.SpileOutTime.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@SpileSituation", operationRecord.SpileSituation == null ? (object)DBNull.Value : (object)operationRecord.SpileSituation));
            cmd.Parameters.Add(new SqlParameter("@SpileWard", operationRecord.SpileWard == null ? (object)DBNull.Value : (object)operationRecord.SpileWard));
            cmd.Parameters.Add(new SqlParameter("@SpileBeforCondition", operationRecord.SpileBeforCondition == null ? (object)DBNull.Value : (object)operationRecord.SpileBeforCondition));
            cmd.Parameters.Add(new SqlParameter("@SpileAffterCondition", operationRecord.SpileAffterCondition == null ? (object)DBNull.Value : (object)operationRecord.SpileAffterCondition));
            cmd.Parameters.Add(new SqlParameter("@RefluxFlag", operationRecord.RefluxFlag == null ? (object)DBNull.Value : (object)operationRecord.RefluxFlag));
            cmd.Parameters.Add(new SqlParameter("@MuscleStrengthRecovery", operationRecord.MuscleStrengthRecovery == null ? (object)DBNull.Value : (object)operationRecord.MuscleStrengthRecovery));
            cmd.Parameters.Add(new SqlParameter("@CoughReflex", operationRecord.CoughReflex == null ? (object)DBNull.Value : (object)operationRecord.CoughReflex));
            cmd.Parameters.Add(new SqlParameter("@InOperaRoomState", operationRecord.InOperaRoomState == null ? (object)DBNull.Value : (object)operationRecord.InOperaRoomState));
            cmd.Parameters.Add(new SqlParameter("@BloodPressure", operationRecord.BloodPressure == null ? (object)DBNull.Value : (object)operationRecord.BloodPressure));
            cmd.Parameters.Add(new SqlParameter("@Tempeture", operationRecord.Tempeture == null ? (object)DBNull.Value : (object)operationRecord.Tempeture));
            cmd.Parameters.Add(new SqlParameter("@Pulse", operationRecord.Pulse == null ? (object)DBNull.Value : (object)operationRecord.Pulse));
            cmd.Parameters.Add(new SqlParameter("@Breath", operationRecord.Breath == null ? (object)DBNull.Value : (object)operationRecord.Breath));
            cmd.Parameters.Add(new SqlParameter("@IsolationIndicator", operationRecord.IsolationIndicator == null ? (object)DBNull.Value : (object)operationRecord.IsolationIndicator));
            cmd.Parameters.Add(new SqlParameter("@AnesMachine", operationRecord.AnesMachine == null ? (object)DBNull.Value : (object)operationRecord.AnesMachine));
            cmd.Parameters.Add(new SqlParameter("@ControlledAnalgesia", operationRecord.ControlledAnalgesia == null ? (object)DBNull.Value : (object)operationRecord.ControlledAnalgesia));
            cmd.Parameters.Add(new SqlParameter("@AnalgesiaModel", operationRecord.AnalgesiaModel == null ? (object)DBNull.Value : (object)operationRecord.AnalgesiaModel));
            cmd.Parameters.Add(new SqlParameter("@AnalgesiaRate", operationRecord.AnalgesiaRate == null ? (object)DBNull.Value : (object)operationRecord.AnalgesiaRate));
            cmd.Parameters.Add(new SqlParameter("@AnalgesiaDrug", operationRecord.AnalgesiaDrug == null ? (object)DBNull.Value : (object)operationRecord.AnalgesiaDrug));
            cmd.Parameters.Add(new SqlParameter("@AldreteScore", operationRecord.AldreteScore == null ? (object)DBNull.Value : (object)operationRecord.AldreteScore));
            cmd.Parameters.Add(new SqlParameter("@RouteMonitoring", operationRecord.RouteMonitoring == null ? (object)DBNull.Value : (object)operationRecord.RouteMonitoring));
            cmd.Parameters.Add(new SqlParameter("@Entourage", operationRecord.Entourage == null ? (object)DBNull.Value : (object)operationRecord.Entourage));
            cmd.Parameters.Add(new SqlParameter("@Remark1", operationRecord.Remark1 == null ? (object)DBNull.Value : (object)operationRecord.Remark1));
            cmd.Parameters.Add(new SqlParameter("@Remark2", operationRecord.Remark2 == null ? (object)DBNull.Value : (object)operationRecord.Remark2));
            cmd.Parameters.Add(new SqlParameter("@Remark3", operationRecord.Remark3 == null ? (object)DBNull.Value : (object)operationRecord.Remark3));
            cmd.Parameters.Add(new SqlParameter("@Crystal", operationRecord.Crystal == null ? (object)DBNull.Value : (object)operationRecord.Crystal));
            cmd.Parameters.Add(new SqlParameter("@Colloid", operationRecord.Colloid == null ? (object)DBNull.Value : (object)operationRecord.Colloid));
            cmd.Parameters.Add(new SqlParameter("@InAmount", operationRecord.InAmount == null ? (object)DBNull.Value : (object)operationRecord.InAmount));
            cmd.Parameters.Add(new SqlParameter("@OutAmount", operationRecord.OutAmount == null ? (object)DBNull.Value : (object)operationRecord.OutAmount));
            cmd.Parameters.Add(new SqlParameter("@OperationTimeSpan", operationRecord.OperationTimeSpan == null ? (object)DBNull.Value : (object)operationRecord.OperationTimeSpan));
            cmd.Parameters.Add(new SqlParameter("@AnaesthesiaTimeSpan", operationRecord.AnaesthesiaTimeSpan == null ? (object)DBNull.Value : (object)operationRecord.AnaesthesiaTimeSpan));
            cmd.Parameters.Add(new SqlParameter("@RoomTimeSpan", operationRecord.RoomTimeSpan == null ? (object)DBNull.Value : (object)operationRecord.RoomTimeSpan));
            cmd.Parameters.Add(new SqlParameter("@AnesthesiaDoctorTimeMinute", operationRecord.AnesthesiaDoctorTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.AnesthesiaDoctorTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@anesthesiaDoctorSucceedTimeMinute", operationRecord.AnesthesiaDoctorSucceedTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.AnesthesiaDoctorSucceedTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@instrumentNurseTimeMinute", operationRecord.InstrumentNurseTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.InstrumentNurseTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@instrumentNurseSucceedTimeMinute", operationRecord.InstrumentNurseSucceedTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.InstrumentNurseSucceedTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@tourNurseTimeMinute", operationRecord.TourNurseTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.TourNurseTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@tourNurseSucceedTimeMinute", operationRecord.TourNurseSucceedTimeMinute == null ? (object)DBNull.Value : (object)operationRecord.TourNurseSucceedTimeMinute));
            cmd.Parameters.Add(new SqlParameter("@RecordPageCount", operationRecord.RecordPageCount == null ? (object)DBNull.Value : (object)operationRecord.RecordPageCount));
            cmd.Parameters.Add(new SqlParameter("@SignName", operationRecord.SignName == null ? (object)DBNull.Value : (object)operationRecord.SignName));
            cmd.Parameters.Add(new SqlParameter("@SignTime", operationRecord.SignTime == null ? (object)DBNull.Value : (object)operationRecord.SignTime));
            cmd.Parameters.Add(new SqlParameter("@RoomId", operationRecord.RoomId.HasValue ? (object)operationRecord.RoomId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@State", operationRecord.State.HasValue ? (object)operationRecord.State.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@RecoverId", operationRecord.RecoverId.HasValue ? (object)operationRecord.RecoverId.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@OperatorNo", operationRecord.OperatorNo == null ? (object)DBNull.Value : (object)operationRecord.OperatorNo));
            cmd.Parameters.Add(new SqlParameter("@OperatorName", operationRecord.OperatorName == null ? (object)DBNull.Value : (object)operationRecord.OperatorName));
            cmd.Parameters.Add(new SqlParameter("@OperateDate", operationRecord.OperateDate.HasValue ? (object)operationRecord.OperateDate.Value : (object)DBNull.Value));
            cmd.Parameters.Add(new SqlParameter("@Remarks", operationRecord.Remarks == null ? (object)DBNull.Value : (object)operationRecord.Remarks));
            cmd.Parameters.Add(new SqlParameter("@Id", operationRecord.Id));
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的更新方法
        /// 
        /// 实体类对象
        /// 影响的记录行数
        internal static int Update(OperationRecord operationRecord)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteUpdateCommand(cmd, operationRecord);
                }
            }
        }
        /// 
        /// 使用事务的更新方法
        /// 
        /// 实现共享Connection的对象
        /// 实体类对象
        /// 影响的记录行数
        internal static int Update(Connection connection, OperationRecord operationRecord)
        {
            return ExcuteUpdateCommand(connection.Command, operationRecord);
        }
        /// 
        /// 执行更新命令
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        internal static int ExcuteUpdateCommand(SqlCommand cmd, string oql, ParameterList parameters)
        {
            //解析过滤部份Sql语句
            string updateString = oql;// SyntaxAnalyzer.ParseSql(oql, new OperationRecordMap()); 
            cmd.CommandText = "update OperationRecord set " + updateString;
            cmd.Parameters.Clear();
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return cmd.ExecuteNonQuery();
        }
        /// 
        /// 不使用事务的更新方法
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        internal static int Update(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteUpdateCommand(cmd, oql, parameters);
                }
            }
        }
        /// 
        /// 使用事务的更新方法
        /// 
        /// 实现共享Connection的对象
        /// 对象查询语句
        /// 参数列表
        /// 影响的记录行数
        internal static int Update(Connection connection, string oql, ParameterList parameters)
        {
            return ExcuteUpdateCommand(connection.Command, oql, parameters);
        }
        #endregion
        #region 查询实体集合
        /// 
        /// 执行Command获取对象列表
        /// 
        /// Command对象
        /// 递归类型
        /// 递归深度
        /// 实体类对象列表
        internal static List ExcuteSelectCommand(SqlCommand cmd, RecursiveType recursiveType, int recursiveDepth)
        {
            List operationRecordList = new List();
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    OperationRecord operationRecord = DataReaderToEntity(dr);
                    operationRecordList.Add(operationRecord);
                }
            }
            return operationRecordList;
        }
        /// 
        /// 执行查询命令
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        internal static List ExcuteSelectCommand(SqlCommand cmd, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            //解析过滤部份Sql语句
            string filterString = SyntaxAnalyzer.ParseSql(oql, new OperationRecordMap());
            if (filterString != string.Empty)
            {
                if (filterString.Trim().ToLower().IndexOf("order ") != 0)
                    filterString = " where " + filterString;
            }
            cmd.Parameters.Clear();
            cmd.CommandText = "select * from OperationRecord " + filterString;
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return ExcuteSelectCommand(cmd, recursiveType, recursiveDepth);
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 实体类对象集合
        internal static List Select()
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from OperationRecord";
                    return ExcuteSelectCommand(cmd, RecursiveType.Parent, 1);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        internal static List Select(RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = "select * from OperationRecord";
                    return ExcuteSelectCommand(cmd, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 实体类对象集合
        internal static List Select(string oql, ParameterList parameters)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteSelectCommand(cmd, oql, parameters, RecursiveType.Parent, 1);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合
        /// 
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        internal static List Select(string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteSelectCommand(cmd, oql, parameters, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 根据对象查询语句查询实体集合(启用事务)
        /// 
        /// 连接对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体类对象集合
        internal static List Select(Connection connection, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            return ExcuteSelectCommand(connection.Command, oql, parameters, recursiveType, recursiveDepth);
        }
        #endregion
        #region 查询单个实体
        /// 
        /// 递归查询单个实体
        /// 
        /// Command对象
        /// 递归类型
        /// 递归深度
        /// 实体对象
        internal static OperationRecord ExcuteSelectSingleCommand(SqlCommand cmd, RecursiveType recursiveType, int recursiveDepth)
        {
            OperationRecord operationRecord = null;
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                if (dr.Read())
                    operationRecord = DataReaderToEntity(dr);
            }
            if (operationRecord == null)
                return operationRecord;
            return operationRecord;
        }
        /// 
        /// 更据对象查询语句递归查询单个实体
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体对象
        internal static OperationRecord ExcuteSelectSingleCommand(SqlCommand cmd, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            //解析过滤部份Sql语句
            string filterString = SyntaxAnalyzer.ParseSql(oql, new OperationRecordMap());
            if (filterString != string.Empty)
            {
                filterString = " where " + filterString;
            }
            cmd.CommandText = "select * from OperationRecord " + filterString;
            cmd.Parameters.Clear();
            //添加参数
            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    cmd.Parameters.Add(new SqlParameter(key, parameters[key]));
                }
            }
            return ExcuteSelectSingleCommand(cmd, recursiveType, recursiveDepth);
        }
        /// 
        /// 更据对象查询语句递归查询单个实体
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 递归类型
        /// 递归深度
        /// 实体对象
        internal static OperationRecord SelectSingle(string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return ExcuteSelectSingleCommand(cmd, oql, parameters, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 更据对象查询语句查询单个实体
        /// 
        /// Command对象
        /// 对象查询语句
        /// 参数列表
        /// 实体对象
        internal static OperationRecord SelectSingle(string oql, ParameterList parameters)
        {
            return SelectSingle(oql, parameters, RecursiveType.Parent, 1);
        }
        /// 
        /// 更据对象查询语句并启用事务查询单个实体
        /// 
        /// 连接对象
        /// 对象查询语句
        /// 参数列表
        /// 实体对象
        internal static OperationRecord SelectSingle(Connection connection, string oql, ParameterList parameters, RecursiveType recursiveType, int recursiveDepth)
        {
            return ExcuteSelectSingleCommand(connection.Command, oql, parameters, recursiveType, recursiveDepth);
        }
        /// 
        /// 更据主键值递归查询单个实体
        /// 
        /// Command对象
        /// 主键值
        /// 递归类型
        /// 递归深度
        /// 实体对象
        internal static OperationRecord SelectSingle(SqlCommand cmd, int? id, RecursiveType recursiveType, int recursiveDepth)
        {
            cmd.Parameters.Clear();
            if (id.HasValue)
            {
                cmd.CommandText = "select * from OperationRecord where Id=@pk";
                cmd.Parameters.Add(new SqlParameter("@pk", id.Value));
            }
            else
            {
                cmd.CommandText = "select * from OperationRecord where Id is null";
            }
            return ExcuteSelectSingleCommand(cmd, recursiveType, recursiveDepth);
        }
        /// 
        /// 按主键字段查询特定实体
        /// 
        /// 主键值
        /// 实体类对象
        internal static OperationRecord SelectSingle(int? id)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return SelectSingle(cmd, id, RecursiveType.Parent, 1);
                }
            }
        }
        /// 
        /// 按主键字段查询特定实体
        /// 
        /// 主键值
        /// 递归类型
        /// 递归深度
        /// 实体类对象
        internal static OperationRecord SelectSingle(int? id, RecursiveType recursiveType, int recursiveDepth)
        {
            using (SqlConnection conn = new SqlConnection(Connection.ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    return SelectSingle(cmd, id, recursiveType, recursiveDepth);
                }
            }
        }
        /// 
        /// 使用事务并按主键字段查询特定实体
        /// 
        /// 连接对象
        /// 主键值
        /// 实体类对象
        internal static OperationRecord SelectSingle(Connection connection, int? id, RecursiveType recursiveType, int recursiveDepth)
        {
            return SelectSingle(connection.Command, id, recursiveType, recursiveDepth);
        }
        #endregion
        /// 
        /// 从DataReader中取出值生成实体对象
        /// 
        /// 查询对象
        /// 过滤条件字符串
        private static OperationRecord DataReaderToEntity(SqlDataReader dr)
        {
            OperationRecord entity = new OperationRecord();
            if (dr["Id"] != System.DBNull.Value)
            {
                entity.Id = Convert.ToInt32(dr["Id"]);
            }
            if (dr["PatientId"] != System.DBNull.Value)
            {
                entity.PatientId = Convert.ToInt32(dr["PatientId"]);
            }
            if (dr["OperationApplyId"] != System.DBNull.Value)
            {
                entity.OperationApplyId = Convert.ToInt32(dr["OperationApplyId"]);
            }
            if (dr["InRoomTime"] != System.DBNull.Value)
            {
                entity.InRoomTime = Convert.ToDateTime(dr["InRoomTime"]);
            }
            if (dr["OutRoomTime"] != System.DBNull.Value)
            {
                entity.OutRoomTime = Convert.ToDateTime(dr["OutRoomTime"]);
            }
            if (dr["OperationBeginTime"] != System.DBNull.Value)
            {
                entity.OperationBeginTime = Convert.ToDateTime(dr["OperationBeginTime"]);
            }
            if (dr["OperationEndTime"] != System.DBNull.Value)
            {
                entity.OperationEndTime = Convert.ToDateTime(dr["OperationEndTime"]);
            }
            if (dr["AnesthesiaBeginTime"] != System.DBNull.Value)
            {
                entity.AnesthesiaBeginTime = Convert.ToDateTime(dr["AnesthesiaBeginTime"]);
            }
            if (dr["AnesthesiaEndTime"] != System.DBNull.Value)
            {
                entity.AnesthesiaEndTime = Convert.ToDateTime(dr["AnesthesiaEndTime"]);
            }
            if (dr["ASALevel"] != System.DBNull.Value)
            {
                entity.ASALevel = Convert.ToInt32(dr["ASALevel"]);
            }
            if (dr["SpecialCase"] != System.DBNull.Value)
            {
                entity.SpecialCase = dr["SpecialCase"].ToString();
            }
            if (dr["Fasting"] != System.DBNull.Value)
            {
                entity.Fasting = dr["Fasting"].ToString();
            }
            if (dr["BloodType"] != System.DBNull.Value)
            {
                entity.BloodType = dr["BloodType"].ToString();
            }
            if (dr["OperationDate"] != System.DBNull.Value)
            {
                entity.OperationDate = dr["OperationDate"].ToString();
            }
            if (dr["OpeSpecialCondition"] != System.DBNull.Value)
            {
                entity.OpeSpecialCondition = dr["OpeSpecialCondition"].ToString();
            }
            if (dr["BMI"] != System.DBNull.Value)
            {
                entity.BMI = dr["BMI"].ToString();
            }
            if (dr["BeforeDrugs"] != System.DBNull.Value)
            {
                entity.BeforeDrugs = dr["BeforeDrugs"].ToString();
            }
            if (dr["AnaesthesiaMethodName"] != System.DBNull.Value)
            {
                entity.AnaesthesiaMethodName = dr["AnaesthesiaMethodName"].ToString();
            }
            if (dr["AnaesthesiaTechnology"] != System.DBNull.Value)
            {
                entity.AnaesthesiaTechnology = dr["AnaesthesiaTechnology"].ToString();
            }
            if (dr["AnaesthesiaComplication"] != System.DBNull.Value)
            {
                entity.AnaesthesiaComplication = dr["AnaesthesiaComplication"].ToString();
            }
            if (dr["SpecialEvent"] != System.DBNull.Value)
            {
                entity.SpecialEvent = dr["SpecialEvent"].ToString();
            }
            if (dr["SuddenSituation"] != System.DBNull.Value)
            {
                entity.SuddenSituation = dr["SuddenSituation"].ToString();
            }
            if (dr["ConditionChage"] != System.DBNull.Value)
            {
                entity.ConditionChage = dr["ConditionChage"].ToString();
            }
            if (dr["RescueMeasures"] != System.DBNull.Value)
            {
                entity.RescueMeasures = dr["RescueMeasures"].ToString();
            }
            if (dr["RescueTime"] != System.DBNull.Value)
            {
                entity.RescueTime = dr["RescueTime"].ToString();
            }
            if (dr["RescuePerson"] != System.DBNull.Value)
            {
                entity.RescuePerson = dr["RescuePerson"].ToString();
            }
            if (dr["RescueTechnology"] != System.DBNull.Value)
            {
                entity.RescueTechnology = dr["RescueTechnology"].ToString();
            }
            if (dr["SpileInTime"] != System.DBNull.Value)
            {
                entity.SpileInTime = Convert.ToDateTime(dr["SpileInTime"]);
            }
            if (dr["SpileOutTime"] != System.DBNull.Value)
            {
                entity.SpileOutTime = Convert.ToDateTime(dr["SpileOutTime"]);
            }
            if (dr["SpileSituation"] != System.DBNull.Value)
            {
                entity.SpileSituation = dr["SpileSituation"].ToString();
            }
            if (dr["SpileWard"] != System.DBNull.Value)
            {
                entity.SpileWard = dr["SpileWard"].ToString();
            }
            if (dr["SpileBeforCondition"] != System.DBNull.Value)
            {
                entity.SpileBeforCondition = dr["SpileBeforCondition"].ToString();
            }
            if (dr["SpileAffterCondition"] != System.DBNull.Value)
            {
                entity.SpileAffterCondition = dr["SpileAffterCondition"].ToString();
            }
            if (dr["RefluxFlag"] != System.DBNull.Value)
            {
                entity.RefluxFlag = dr["RefluxFlag"].ToString();
            }
            if (dr["MuscleStrengthRecovery"] != System.DBNull.Value)
            {
                entity.MuscleStrengthRecovery = dr["MuscleStrengthRecovery"].ToString();
            }
            if (dr["CoughReflex"] != System.DBNull.Value)
            {
                entity.CoughReflex = dr["CoughReflex"].ToString();
            }
            if (dr["InOperaRoomState"] != System.DBNull.Value)
            {
                entity.InOperaRoomState = dr["InOperaRoomState"].ToString();
            }
            if (dr["BloodPressure"] != System.DBNull.Value)
            {
                entity.BloodPressure = dr["BloodPressure"].ToString();
            }
            if (dr["Tempeture"] != System.DBNull.Value)
            {
                entity.Tempeture = dr["Tempeture"].ToString();
            }
            if (dr["Pulse"] != System.DBNull.Value)
            {
                entity.Pulse = dr["Pulse"].ToString();
            }
            if (dr["Breath"] != System.DBNull.Value)
            {
                entity.Breath = dr["Breath"].ToString();
            }
            if (dr["IsolationIndicator"] != System.DBNull.Value)
            {
                entity.IsolationIndicator = dr["IsolationIndicator"].ToString();
            }
            if (dr["AnesMachine"] != System.DBNull.Value)
            {
                entity.AnesMachine = dr["AnesMachine"].ToString();
            }
            if (dr["ControlledAnalgesia"] != System.DBNull.Value)
            {
                entity.ControlledAnalgesia = dr["ControlledAnalgesia"].ToString();
            }
            if (dr["AnalgesiaModel"] != System.DBNull.Value)
            {
                entity.AnalgesiaModel = dr["AnalgesiaModel"].ToString();
            }
            if (dr["AnalgesiaRate"] != System.DBNull.Value)
            {
                entity.AnalgesiaRate = dr["AnalgesiaRate"].ToString();
            }
            if (dr["AnalgesiaDrug"] != System.DBNull.Value)
            {
                entity.AnalgesiaDrug = dr["AnalgesiaDrug"].ToString();
            }
            if (dr["AldreteScore"] != System.DBNull.Value)
            {
                entity.AldreteScore = dr["AldreteScore"].ToString();
            }
            if (dr["RouteMonitoring"] != System.DBNull.Value)
            {
                entity.RouteMonitoring = dr["RouteMonitoring"].ToString();
            }
            if (dr["Entourage"] != System.DBNull.Value)
            {
                entity.Entourage = dr["Entourage"].ToString();
            }
            if (dr["Remark1"] != System.DBNull.Value)
            {
                entity.Remark1 = dr["Remark1"].ToString();
            }
            if (dr["Remark2"] != System.DBNull.Value)
            {
                entity.Remark2 = dr["Remark2"].ToString();
            }
            if (dr["Remark3"] != System.DBNull.Value)
            {
                entity.Remark3 = dr["Remark3"].ToString();
            }
            if (dr["Crystal"] != System.DBNull.Value)
            {
                entity.Crystal = dr["Crystal"].ToString();
            }
            if (dr["Colloid"] != System.DBNull.Value)
            {
                entity.Colloid = dr["Colloid"].ToString();
            }
            if (dr["InAmount"] != System.DBNull.Value)
            {
                entity.InAmount = dr["InAmount"].ToString();
            }
            if (dr["OutAmount"] != System.DBNull.Value)
            {
                entity.OutAmount = dr["OutAmount"].ToString();
            }
            if (dr["OperationTimeSpan"] != System.DBNull.Value)
            {
                entity.OperationTimeSpan = dr["OperationTimeSpan"].ToString();
            }
            if (dr["AnaesthesiaTimeSpan"] != System.DBNull.Value)
            {
                entity.AnaesthesiaTimeSpan = dr["AnaesthesiaTimeSpan"].ToString();
            }
            if (dr["RoomTimeSpan"] != System.DBNull.Value)
            {
                entity.RoomTimeSpan = dr["RoomTimeSpan"].ToString();
            }
            if (dr["AnesthesiaDoctorTimeMinute"] != System.DBNull.Value)
            {
                entity.AnesthesiaDoctorTimeMinute = dr["AnesthesiaDoctorTimeMinute"].ToString();
            }
            if (dr["anesthesiaDoctorSucceedTimeMinute"] != System.DBNull.Value)
            {
                entity.AnesthesiaDoctorSucceedTimeMinute = dr["anesthesiaDoctorSucceedTimeMinute"].ToString();
            }
            if (dr["instrumentNurseTimeMinute"] != System.DBNull.Value)
            {
                entity.InstrumentNurseTimeMinute = dr["instrumentNurseTimeMinute"].ToString();
            }
            if (dr["instrumentNurseSucceedTimeMinute"] != System.DBNull.Value)
            {
                entity.InstrumentNurseSucceedTimeMinute = dr["instrumentNurseSucceedTimeMinute"].ToString();
            }
            if (dr["tourNurseTimeMinute"] != System.DBNull.Value)
            {
                entity.TourNurseTimeMinute = dr["tourNurseTimeMinute"].ToString();
            }
            if (dr["tourNurseSucceedTimeMinute"] != System.DBNull.Value)
            {
                entity.TourNurseSucceedTimeMinute = dr["tourNurseSucceedTimeMinute"].ToString();
            }
            if (dr["RecordPageCount"] != System.DBNull.Value)
            {
                entity.RecordPageCount = dr["RecordPageCount"].ToString();
            }
            if (dr["SignName"] != System.DBNull.Value)
            {
                entity.SignName = dr["SignName"].ToString();
            }
            if (dr["SignTime"] != System.DBNull.Value)
            {
                entity.SignTime = dr["SignTime"].ToString();
            }
            if (dr["RoomId"] != System.DBNull.Value)
            {
                entity.RoomId = Convert.ToInt32(dr["RoomId"]);
            }
            if (dr["State"] != System.DBNull.Value)
            {
                entity.State = Convert.ToInt32(dr["State"]);
            }
            if (dr["RecoverId"] != System.DBNull.Value)
            {
                entity.RecoverId = Convert.ToInt32(dr["RecoverId"]);
            }
            if (dr["OperatorNo"] != System.DBNull.Value)
            {
                entity.OperatorNo = dr["OperatorNo"].ToString();
            }
            if (dr["OperatorName"] != System.DBNull.Value)
            {
                entity.OperatorName = dr["OperatorName"].ToString();
            }
            if (dr["OperateDate"] != System.DBNull.Value)
            {
                entity.OperateDate = Convert.ToDateTime(dr["OperateDate"]);
            }
            if (dr["Remarks"] != System.DBNull.Value)
            {
                entity.Remarks = dr["Remarks"].ToString();
            }
            return entity;
        }
    }
}