| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- 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 基础功能
- /// <summary>
- /// 添加信息
- /// <param name="model">实体</param>
- /// </summary>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 删除信息
- /// <param name="id">主键</param>
- /// </summary>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 获得信息
- /// <param name="id">主键</param>
- /// </summary>
- /// <returns></returns>
- public mic_script FindDefault(int id)
- {
- using (DBEntities dbEntity = new DBEntities())
- {
- return dbEntity.mic_script_market.Where(m => m.id == id).FirstOrDefault();
- }
- }
- /// <summary>
- /// 更新信息
- /// <param name="model">实体</param>
- /// </summary>
- /// <returns></returns>
- 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;
- }
- }
- /// <summary>
- /// 获得所有信息
- /// </summary>
- /// <returns></returns>
- public List<mic_script> FindAll()
- {
- using (DBEntities dbEntity = new DBEntities())
- {
- return dbEntity.mic_script_market.OrderByDescending(m => m.id).ToList();
- }
- }
- #endregion 基础功能
- #region 扩展功能
- /// <summary>
- /// 添加脚本
- /// </summary>
- /// <param name="model">主表</param>
- /// <param name="step">步骤数据</param>
- /// <returns></returns>
- public bool Add(mic_script model, List<mic_script_step> steps, Dictionary<mic_script_step, List<Args>> 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<mic_script_step_param> paramss = new List<mic_script_step_param>();
- for (int i = 0; i < steps.Count; i++)
- {
- List<Args> 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<double>)(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;
- }
- }
- }
- /// <summary>
- /// 编辑信息
- /// </summary>
- /// <param name="model"></param>
- /// <param name="steps"></param>
- /// <returns></returns>
- public bool Update(mic_script model, List<mic_script_step> steps, Dictionary<mic_script_step, List<Args>> 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<mic_script_step_param> paramss = new List<mic_script_step_param>();
- for (int i = 0; i < steps.Count; i++)
- {
- List<Args> 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<double>)(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 扩展功能
- }
- }
|