/// <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 = ;
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
}
        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

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
}

linq to sql 三层架构中使用CRUD操作的更多相关文章

  1. 三层架构中bll层把datatable转换为实体model的理解

    看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ...

  2. 谈谈三层架构中Model的作用

    Model又叫实体类,这个东西,大家可能觉得不好分层.包括我以前在内,是这样理解的:UI<-->Model<-->BLL<-->Model<-->DAL ...

  3. 为什么三层架构中业务层(service)、持久层(dao)需要使用一个接口?

    为什么三层架构中业务层(service).持久层(dao)需要使用一个接口? 如果没有接口那么我们在控制层使用业务层或业务层使用持久层时,必须要学习每个方法,若哪一天后者的方法名改变了则直接影响到前面 ...

  4. 【转】.NET 三层架构 中 DAL+IDAL+Model+BLL+Web

    其实三层架构是一个程序最基本的 在.Net开发中通常是多层开发 比如说 BLL 就是business Logic laywer(业务逻辑层) 他只负责向数据提供者也就是DAL调用数据 然后传递给 客户 ...

  5. 事务管理在三层架构中应用以及使用ThreadLocal再次重构

    本篇将详细讲解如何正确地在实际开发中编写事务处理操作,以及在事务处理的过程中使用ThreadLocal的方法. 在前面两篇博客中已经详细地介绍和学习了DbUtils这个Apache的工具类,那么在本篇 ...

  6. 关于C#三层架构中的“分页”功能

    新手上路,请多指教! 今天将分页功能实现了,要特别感谢坐在前面的何同学的指点,不胜感谢!功能的实现采用了三层架构的方式实现该功能,简述如下: 界面: DAL层有两个方法:“当前所在页”和“总页数” 这 ...

  7. MVC3+Linq to sql 显示数据库中数据表的数据

    1:首先创建asp.net mvc3应用程序 2:创建项目完成后 找到controllers文件鼠标右击选择添加控制器 3 为models文件夹添加一个linq to sql类文件,然后把数据库中的数 ...

  8. Linq to SQL 语法查询(子查询 & in操作 & join )

    var 子查询 = from c in ctx.Customers                    where                        (from o in ctx.Ord ...

  9. LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作

    我们继续讲解LINQ to SQL语句,这篇我们来讨论Insert/Update/Delete操作.这个在我们的程序中最为常用了.我们直接看例子. Insert/Update/Delete操作 插入( ...

随机推荐

  1. Brew 编译mod错误Error: L6265E: Non-RWPI Section libspace.o(.bss) cannot be assigned to PI Exec region ER_ZI

    Error: L6265E: Non-RWPI Section libspace.o(.bss) cannot be assigned to PI Exec region ER_ZI.: Error: ...

  2. mysql 基础命令入门学习

    登陆到mysql mysql -u 用户名 -p [数据库]   显示数据库 show databases;   使用一个数据库 use 数据库名;   显示表 show tables;   纠正数据 ...

  3. HDU 5835 Danganronpa

    Danganronpa Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  4. 【转载】ACM总结——dp专辑

    感谢博主——      http://blog.csdn.net/cc_again?viewmode=list       ----------  Accagain  2014年5月15日 动态规划一 ...

  5. 新版本ubuntu13.10软件安装

    问题1:如何解决ubunt13.04不能和主机共享文件的问题 . 安装VMware Tools 网上有很多的资料,这里没有给出. . 设置共享文件夹目录 ) 在VMware虚拟机窗口,选择VM-> ...

  6. Leetcode Largest Number c++ solution

    Total Accepted: 16020 Total Submissions: 103330     Given a list of non negative integers, arrange t ...

  7. php里面为什么header之前有输出报错 源码分析

    众所周知,php 里面 header之前有输出的话,会报错,例如下面这样   就这个错误,我们开始查阅php源代码,到底是怎样做的,至于php源代码分析,安装,和调试时怎样配置的,我会专门写一篇文章去 ...

  8. 基于Hbase数据的Mapreduce程序环境开发

    一.实验目标 编写Mapreduce程序,以Hbase表数据为Map输入源,计算结果输出到HDFS或者Hbase表中. 在非CDH5的Hadoop集群环境中,将编写好的Mapreduce程序整个工程打 ...

  9. <Chapter 2>2-1-1.安装Python SDK

    App Engine包含两个Python运行时环境:一个基于Python2.5的传统环境,以及一个运行Python2.7的新环境.这个新环境不仅仅是有一个轻微的新版本的Python解释器.主要是,这个 ...

  10. CORBA

    公共对象请求代理体系结构(Common Object Request Broker Architecture)