using PaintDotNet.Base; using PaintDotNet.DbOpreate.DbIDal; using PaintDotNet.DbOpreate.DbModel; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Transactions; namespace PaintDotNet.DbOpreate.DbCodeFirstDAL { class mic_script_DAL : Imic_script { #region 基础功能 /// /// 添加信息 /// 实体 /// /// public bool Add(mic_script model) { using (DBEntities dbEntity = new DBEntities()) { dbEntity.mic_script_market.Add(model); int recordsAffected; recordsAffected = dbEntity.SaveChanges(); return recordsAffected > 0; } } /// /// 删除信息 /// 主键 /// /// public bool Del(int id) { using (DBEntities dbEntity = new DBEntities()) { var info = dbEntity.mic_script_market.SingleOrDefault(m => m.id == id); if (info != null) { dbEntity.mic_script_market.Remove(info); dbEntity.SaveChanges(); } else { return false; } return true; } } /// /// 获得信息 /// 主键 /// /// public mic_script FindDefault(int id) { using (DBEntities dbEntity = new DBEntities()) { return dbEntity.mic_script_market.Where(m => m.id == id).FirstOrDefault(); } } /// /// 更新信息 /// 实体 /// /// public bool Update(mic_script model) { using (DBEntities dbEntity = new DBEntities()) { var info = dbEntity.mic_script_market.SingleOrDefault(m => m.id == model.id); info.id = model.id;//主键ID info.name = model.name;//会员id int recordsAffected; recordsAffected = dbEntity.SaveChanges(); return recordsAffected > 0; } } /// /// 获得所有信息 /// /// public List FindAll() { using (DBEntities dbEntity = new DBEntities()) { return dbEntity.mic_script_market.OrderByDescending(m => m.id).ToList(); } } #endregion 基础功能 #region 扩展功能 /// /// 添加脚本 /// /// 主表 /// 步骤数据 /// public bool Add(mic_script model, List steps, Dictionary> args) { using (DBEntities dbEntity = new DBEntities()) { //貌似sqllite不支持TransactionScope using (var tran = dbEntity.Database.BeginTransaction()) { try { //插入脚本主表数据 dbEntity.mic_script_market.Add(model); dbEntity.SaveChanges(); //插入脚本步骤表 for (int i = 0; i < steps.Count; i++) { steps[i].script_id = model.id; } dbEntity.mic_script_step_market.AddRange(steps); dbEntity.SaveChanges(); //插入脚本步骤参数表 List paramss = new List(); for (int i = 0; i < steps.Count; i++) { List argList = args[steps[i]]; if (argList != null) { foreach (Args arg in argList) { if (arg.Value == null) continue; mic_script_step_param param = new mic_script_step_param(); param.script_id = model.id; param.step_id = steps[i].id; param.param_type = (int)arg.Type; param.param_key = arg.Key; if (arg.Type == Dtryt.Array) param.param_value = ((int)arg.Value).ToString(); else if (arg.Type == Dtryt.DecimalScope) param.param_value = string.Join(",", ((List)(arg.Value)).ToArray()); else param.param_value = arg.Value.ToString(); paramss.Add(param); } } } dbEntity.mic_script_step_param_market.AddRange(paramss); int recordsAffected = dbEntity.SaveChanges(); tran.Commit(); //更新数量超过1证明更新成功 return true; // recordsAffected > 1; } catch(Exception e) { System.Console.WriteLine(e.ToString()); tran.Rollback(); } return false; } } } /// /// 编辑信息 /// /// /// /// public bool Update(mic_script model, List steps, Dictionary> args) { using (DBEntities dbEntity = new DBEntities()) { using (var tran = dbEntity.Database.BeginTransaction()) { try { //更新脚本主表数据 var info = dbEntity.mic_script_market.SingleOrDefault(m => m.id == model.id); dbEntity.Entry(info).CurrentValues.SetValues(model); //删除脚本步骤表数据 var setp_list = dbEntity.mic_script_step_market.Where(m => m.script_id == model.id).ToList(); dbEntity.mic_script_step_market.RemoveRange(setp_list); //添加脚本步骤表数据 dbEntity.mic_script_step_market.AddRange(steps); dbEntity.SaveChanges(); //删除脚本步骤参数表数据 var paramss_list = dbEntity.mic_script_step_param_market.Where(m => m.script_id == model.id).ToList(); dbEntity.mic_script_step_param_market.RemoveRange(paramss_list); //插入脚本步骤参数表 List paramss = new List(); for (int i = 0; i < steps.Count; i++) { List argList = args[steps[i]]; if (argList != null) { foreach (Args arg in argList) { if (arg.Value == null) continue; mic_script_step_param param = new mic_script_step_param(); param.script_id = model.id; param.step_id = steps[i].id; param.param_type = (int)arg.Type; param.param_key = arg.Key; if (arg.Type == Dtryt.Array) param.param_value = ((int)arg.Value).ToString(); else if (arg.Type == Dtryt.DecimalScope) param.param_value = string.Join(",", ((List)(arg.Value)).ToArray()); else param.param_value = arg.Value.ToString(); paramss.Add(param); } } } dbEntity.mic_script_step_param_market.AddRange(paramss); //保存更改 int recordsAffected = dbEntity.SaveChanges(); //提交事务 tran.Commit(); //更新数量超过1证明更新成功 return recordsAffected > 1; } catch (Exception e) { System.Console.WriteLine(e.ToString()); tran.Rollback(); } return false; } } } #endregion 扩展功能 } }