/// <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. ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...

  2. I.MX6 android 获取framebuffer信息

    /******************************************************************************** * I.MX6 android 获取 ...

  3. HDU 5285 wyh2000 and pupil (二分图着色)

    题意: 共有n个小学生,编号为1−n.将所有小学生分成2组,每组都至少有1个人.但是有些小学生之间并不认识,而且如果a不认识b,那么b也不认识a.Wyh2000希望每组中的小学生都互相认识.而且第一组 ...

  4. Java [Leetcode 111]Minimum Depth of Binary Tree

    题目描述: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along th ...

  5. 在Windows下编译ffmpeg完全手册

    本文的内容几乎全部来自于FFmpeg on Windows,但是由于国内的网络封锁,很难访问这个域名下的内容,因此我一方面按照我自己的理解和实践做了翻译,另一方面也是为了能提供一个方便的参考方法. 注 ...

  6. linux + ffmpeg + eclipse 调试

    使用linux + ffmpeg + eclipse调试步骤OS : ubuntu 12.04Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c++ 导入ffmpeg项目 ...

  7. 给table中某一列的文字右对齐

    一般来说,没写过jquery的前端人员,肯定是定义一个class,给每一行的那列加上align_r{text-align:right}.这是很麻烦的. 所以用jquery来写,可以$("ta ...

  8. Web Notification

    在OS X 10.8 Mountain Lion系统上,通过Safari访问的页面能够发送通知到系统右边栏通知中心,通知(Notification)是通过WebKit Notification 对象发 ...

  9. 我的EC-final总结

    by.Max EC-final正式结束,也预示着我大学ICPC旅程的结束.回来睡了一天,现在也可以总结一下了 被告知参赛: 本来以为就会这样告别ACM-ICPC,没想到半个月前徐老师告诉我们SHU给我 ...

  10. 使用JSP处理用户注册和登陆

    1. 这是一个JSP实例,由四个JSP页面组成,处理用户的注册和登陆信息2. 首先是login.jsp,代码如下:<html><center><form method=g ...