/// <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. Java [Leetcode 260]Single Number III

    题目描述: Given an array of numbers nums, in which exactly two elements appear only once and all the oth ...

  2. 深入浅出ClassLoader

    你真的了解ClassLoader吗? 这篇文章翻译自zeroturnaround.com的 Do You Really Get Classloaders? ,融入和补充了笔者的一些实践.经验和样例.本 ...

  3. 关于Android Studio升级到2.0后和Gradle插件不兼容的问题

    今天升级AS到2.0后,用AS在真机上调试,发现报了如下错误: This version of Android Studio is incompatible with the Gradle Plugi ...

  4. HDU 4422 The Little Girl who Picks Mushrooms

    题意:一共有5座山,已知小女孩在n座山采了n篮蘑菇,如果n小于5则在其他的山里采了任意重量的蘑菇,给出每篮蘑菇的重量,她回去的时候会遇到仨女巫要她交出三篮蘑菇的重量和恰好为1024的倍数,否则就把她的 ...

  5. 《Python基础教程(第二版)》学习笔记 -> 第七章 更加抽象

    对象的魔力 多态:意味着可以对不同类的对象使用同样的操作: 封装:对外部世界隐藏对象的工作细节: 继承:以普通的类为基础建立专门的类对象 多态① 多态和方法绑定到对象特性上面的函数称为方法(metho ...

  6. WEB安全性测试测试用例(基础)

    建立整体的威胁模型,测试溢出漏洞.信息泄漏.错误处理.SQL 注入.身份验证和授权错误. 输入验证 客户端验证服务器端验证(禁用脚本调试,禁用Cookies) 1.输入很大的数(如4,294,967, ...

  7. 【转载】【内存对齐(二)】__declspec( align(#) )的用法和大小计算

    转自:http://www.cppblog.com/deercoder/archive/2011/03/13/141747.html 感谢作者! 在上面讲到了关于pack的内存对齐和计算方法,这里继续 ...

  8. C++虚函数表原理

    C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指 向其子类的实例,然后通过父类的指针调用实际子类的成员函数.这种技术可以让父类的指针有“多种形态”,这是一种泛型技 ...

  9. 游戏设计模式:Subclass Sandbox模式,以及功能方法集的设计思考

    书中总结出这种 Subclass Sandbox 的设计模式 Game Design Patterns: Subclass Sandbox 这种模式要点有两点: 在基类中实现各种功能性方法供子类调用 ...

  10. Linux服务器下没有root权限装Matlab R2013a

    Matlab R2013a Unix版下载地址 注意:由于我是在单位的集群系统上装Matlab,没有root权限,故下载下来的.iso文件不能在linux下用mount命令挂载,故先在Win下解压,再 ...