在NET+EF+MVC接口开过程中,有时候需要应用行锁和拼接sql语句下面笔者介绍一下使用场景和方法,以供参考:
一、行锁
#region 人脸采集更新图片和特征码时,需要行锁,要更新本张图片特征码时,不能有其它人同时操作
t = DbHelperSQL.ExecuteSql("update hx_student_face WITH (ROWLOCK) set face_photosname='" + face_photosname + "',facial_feature='" + model.facial_feature + "' where TrialID=" + model.TrialID and student_face_id=" + face.student_face_id + "");
#endregion 更新图片和特征码
二、拼接sql语句时需要用CAST,CAST是将一种数据类型的表达式转换为另一种数据类型的表达式。
string sqldate = statisticaldate.ToString("yyyyMMdd");
StatisticsID = WisdomStarts.Common.Utils.GenerateIntID();
string sql = "declare @prefix varchar(8) set @prefix= substring('" + sqldate + "',3,6) select cast(@prefix+'" + testingtype + "'+right('0000'+cast(NewEnrolmentID as varchar(24)),16) as decimal(24)) as detection_record_id from HX_Kinder_NewEnrolment where Cadetstatus =1 and TrialID=" + TrialID + " and KindergartenID=" + KindergartenID + " and Kinder_Class_ID=" + Kinder_Class_ID + "";
DataTable dt = DbHelperSQL.GET_DataTable_List(sql);
// 把DataTable转换为IList<UserInfo>
IList<hx_detection_record> recordlist = ModelConvertHelper<hx_detection_record>.ConvertToModel(dt);