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(创建、读取、更新、删除)及分页功能的示例应用,涵盖从基本概念到完整项目架构的各个层次。
483 3
|
Java 数据库连接 应用服务中间件
JavaWeb CRUD 与分页系统架构学习教程
本教程详细讲解了如何使用 Java Web 技术构建一个带有 CRUD 和分页功能的应用程序。以产品信息管理为例,采用 MVC 架构设计,涵盖 Servlet、JSP、JDBC/MyBatis 等技术。内容包括基础知识介绍、项目结构划分、数据库连接配置、DAO 层实现、Service 层设计、Servlet 控制层编写、JSP 前端展示以及分页功能的实现。同时涉及日志配置和 Tomcat 部署运行。通过分层开发,确保代码清晰、职责分明,便于维护和扩展。适合初学者掌握 Java Web 开发全流程,并为学习更高级框架奠定基础。
523 0
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
449 0
|
SQL 存储 缓存
SQL的基础架构
SQL的基础架构
云架构数据倾斜问题之在SQL数据源读取查询时合并小文件如何解决
云架构数据倾斜问题之在SQL数据源读取查询时合并小文件如何解决
264 0
|
设计模式 Java 领域建模
【领域驱动设计 学习目标及大纲】从CRUD到架构设计
【领域驱动设计 学习目标及大纲】从CRUD到架构设计
499 1
|
SQL NoSQL 架构师
SQL还是NoSQL?架构师必备选型技能
SQL还是NoSQL?架构师必备选型技能
421 4
|
SQL 开发框架 .NET
C# Linq SaveChanges()报错 You have an error in your SQL syntex
C# Linq SaveChanges()报错 You have an error in your SQL syntex
186 0
|
SQL 存储 关系型数据库
MySQL(一)基本架构、SQL语句操作、试图
MySQL(一)基本架构、SQL语句操作、试图
235 0