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

 

目录
相关文章
|
Java 数据库连接 应用服务中间件
JavaWeb CRUD 与分页系统架构学习教程
本教程将带你一步步构建一个 Java Web 的 CRUD(创建、读取、更新、删除)及分页功能的示例应用,涵盖从基本概念到完整项目架构的各个层次。
502 3
|
Java 数据库连接 应用服务中间件
JavaWeb CRUD 与分页系统架构学习教程
本教程详细讲解了如何使用 Java Web 技术构建一个带有 CRUD 和分页功能的应用程序。以产品信息管理为例,采用 MVC 架构设计,涵盖 Servlet、JSP、JDBC/MyBatis 等技术。内容包括基础知识介绍、项目结构划分、数据库连接配置、DAO 层实现、Service 层设计、Servlet 控制层编写、JSP 前端展示以及分页功能的实现。同时涉及日志配置和 Tomcat 部署运行。通过分层开发,确保代码清晰、职责分明,便于维护和扩展。适合初学者掌握 Java Web 开发全流程,并为学习更高级框架奠定基础。
552 0
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
500 7
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在执行SQL查询时遇到报错,代码为[XX000],该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
SQL 分布式计算 DataWorks
MaxCompute操作报错合集之使用sql查询一个表的分区数据时遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
445 2
|
SQL DataWorks NoSQL
DataWorks操作报错合集之在执行带with语句的SQL查询时出现了错误,是什么原因
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
SQL 分布式计算 资源调度
MaxCompute操作报错合集之执行SQL Union All操作时,数据类型产生报错,该怎么解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
599 1
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行多条SQL语句时,使用同一个实例来运行,遇到报错,该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
435 1
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之重新上传后只有SQL无法运行,而Python可以正常运行,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。