linq to sql 三层架构中使用CRUD操作

 /// <summary>

    /// 数据层

    /// </summary>

    public partial class GasBottles : IGasBottles

    {

        #region IGasBottles 成员



        public Model.GasBottles GetModel(int gasBottlesID)

        {

            var db = DbContext.LGSCMSDataContext;

            try

            {

                var gs = db.GasBottles.FirstOrDefault(s => s.ID == gasBottlesID);

                if (gs != null)

                {

                    Model.GasBottles gasBottlesInfo = gs.ConvertToEntity<Model.GasBottles>();

                    return gasBottlesInfo;

                }

            }

            catch (Exception ex)

            {

                throw ex;

            }



            return null;

        }



        public bool Add(Model.GasBottles gasBottles)

        {

            bool flag = false;

            try

            {

                var db = DbContext.LGSCMSDataContext;

                DataLinqEntity.GasBottles gs = gasBottles.ConvertToEntity<DataLinqEntity.GasBottles>();

                db.GasBottles.InsertOnSubmit(gs);

                db.SubmitChanges();

                flag = true;

            }

            catch (Exception ex)

            {

                flag = false;

                throw ex;

            }

            return flag;

        }



        public bool Update(Model.GasBottles gasBottles)

        {

            bool flag = false;

            var changedData = gasBottles.ConvertToEntity<DataLinqEntity.GasBottles>();

            var db = DbContext.LGSCMSDataContext;

            try

            {

                var updateTarget = db.GasBottles.SingleOrDefault(i => i.ID == gasBottles.ID);

                //CopyProperties(ref updateTarget, changedData);

                changedData.GetType().GetProperties()

                .Where(p => p.GetCustomAttributes(typeof(ColumnAttribute), false).Any()).ToList()

                .ForEach(p => p.SetValue(updateTarget, p.GetValue(changedData, null), null));

                db.SubmitChanges();

                flag = true;

            }

            catch (Exception ex)

            {

                flag = false;

                throw ex;

            }

            return flag;

        }



        public bool Delete(int gasBottlesID)

        {

            bool flag = false;

            var db = DbContext.LGSCMSDataContext;

            try

            {

                var gs = db.GasBottles.FirstOrDefault(s => s.ID == gasBottlesID);

                if (gs != null)

                {

                    gs.deleteflag = 1;

                    db.SubmitChanges();

                }

            }

            catch (Exception ex)

            {

                flag = false;

                throw ex;

            }



            return flag;

        }



        /// <summary>

        /// 新增或更新

        /// </summary>

        /// <param name="gasBottles"></param>

        /// <param name="gasBottlesID"></param>

        /// <returns></returns>

        public bool Save(Model.GasBottles gasBottles, out int gasBottlesID)

        {

            bool flag = false;

            var changedData = gasBottles.ConvertToEntity<DataLinqEntity.GasBottles>();

            var db = DbContext.LGSCMSDataContext;

            try

            {

                //=>新增

                var updateTarget = db.GasBottles.SingleOrDefault(i => i.ID == gasBottles.ID);

                if (updateTarget == null)

                {

                    db.GasBottles.InsertOnSubmit(changedData);

                    db.SubmitChanges();

                    gasBottlesID = changedData.ID.ToInt();

                    flag = true;

                }

                //=>修改

                else

                {

                    //CopyProperties(ref updateTarget, changedData);

                    changedData.GetType().GetProperties()

                    .Where(p => p.GetCustomAttributes(typeof(ColumnAttribute), false).Any()).ToList()

                    .ForEach(p => p.SetValue(updateTarget, p.GetValue(changedData, null), null));

                    db.SubmitChanges();

                    gasBottlesID = updateTarget.ID.ToInt();

                    flag = true;

                }

            }

            catch (Exception ex)

            {

                flag = false;

                throw ex;

            }

            return flag;

        }



        #endregion

    }
View Code
        private void CopyProperties<T>(ref T Target, T Source)

        {

            foreach (PropertyInfo PI in Target.GetType().GetProperties())

            {

                if (PI.CanWrite && PI.CanRead)

                {

                    PI.SetValue(Target, PI.GetValue(Source, null), null);

                }

            }

        }

        #endregion
View Code

 

DbContext

 public class DbContext

    {

        /// <summary>

        /// 

        /// </summary>

        private readonly static string connectionString = SqlHelper.SQLConnString;



        #region [=>Winfrom方式]

        //private static WLMQGasBottlesDataContext _WLMQGasBottlesDataContext;

        ///// <summary>

        ///// 

        ///// </summary>

        //public static WLMQGasBottlesDataContext WLMQGasBottlesDataContext

        //{

        //    get

        //    {

        //        return _WLMQGasBottlesDataContext ?? new WLMQGasBottlesDataContext(connectionString);

        //    }

        //}

        #endregion



        #region [=>Web方式]

        public static WLMQGasBottlesDataContext WLMQGasBottlesDataContext

        {

            get

            {

                WLMQGasBottlesDataContext context = HttpContext.Current.Items["WLMQGasBottlesDataContext"] as WLMQGasBottlesDataContext;

                if (context == null)

                {

                    context = new WLMQGasBottlesDataContext(connectionString);

                    HttpContext.Current.Items["WLMQGasBottlesDataContext"] = context;

                }

                return context;

            }

        }



        public static LGSCMSDataContext LGSCMSDataContext

        {

            get

            {

                LGSCMSDataContext context = HttpContext.Current.Items["LGSCMSDataContext"] as LGSCMSDataContext;

                if (context == null)

                {

                    context = new LGSCMSDataContext(connectionString);

                    HttpContext.Current.Items["LGSCMSDataContext"] = context;

                }

                return context;

            }

        }

        #endregion

    }
View Code

 

你可能感兴趣的:(LINQ)