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

简介: /// /// 数据层 /// public partial class GasBottles : IGasBottles { #region IGasBottles 成员 public Model.
 /// <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

 

目录
相关文章
|
2月前
|
SQL 数据库 数据安全/隐私保护
【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!
【操作宝典】SQL巨擘:掌握SQL Server Management的终极秘籍!
61 0
|
3月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
89 0
|
1月前
|
SQL 安全 数据库
第三章用sql语句操作数据
第三章用sql语句操作数据
10 0
|
1月前
|
SQL druid Java
【MyBatis】2、MyBatis 的动态 SQL 和增删改操作
【MyBatis】2、MyBatis 的动态 SQL 和增删改操作
29 0
|
2月前
|
SQL 开发框架 .NET
C# Linq SaveChanges()报错 You have an error in your SQL syntex
C# Linq SaveChanges()报错 You have an error in your SQL syntex
10 0
|
3月前
|
SQL 数据库
SQL-修改表操作
SQL-修改表操作
|
3月前
|
SQL 存储 关系型数据库
SQL语句-表操作
SQL语句-表操作
|
3月前
|
SQL Java 数据库连接
这个问题是由于Flink在执行SQL语句时,无法找到合适的表工厂来处理JOIN操作。
【1月更文挑战第17天】【1月更文挑战第85篇】这个问题是由于Flink在执行SQL语句时,无法找到合适的表工厂来处理JOIN操作。
23 8
|
3月前
|
SQL
在SQL中连接和复杂操作
在SQL中连接和复杂操作
22 0
linq2sql代码大全
虽然linq2sql 不是什么新技术,但是这个ppt附带的例子我花了2周时间来准备 覆盖了linq2sql使用/特性的方方面面,可以算是一个例子大全,提供给大家作为学习的材料     Training ii:linq2sql View more presentations from powerzhuye.
691 0