1. using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.Linq;

    namespace DAL
    {
    public class LinQBaseDao
    {
    /// <summary>
    /// 查询所有的记录
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <returns></returns>
    public IEnumerable<T> Query<T>(DataContext dc) where T:class
    {
    return dc.GetTable<T>().AsEnumerable<T>() ;
    }
    /// <summary>
    /// 按条件查询记录
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="fun"></param>
    /// <returns></returns>
    public IEnumerable<T> Query<T>(DataContext dc, Func<T,bool> fun) where T : class
    {
    return dc.GetTable<T>().Where<T>(fun).AsEnumerable<T>();
    }

    /// <summary>
    /// 查询单条 返回实体
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="fun"></param>
    /// <returns></returns>
    public T Single<T>(DataContext dc,Func<T, bool> fun) where T : class
    {
    return dc.GetTable<T>().Single<T>(fun);
    }

    /// <summary>
    /// 添加一条记录
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="tentity"></param>
    public void InsertOne<T>(DataContext dc, T tentity) where T : class
    {
    var table = dc.GetTable<T>();
    table.InsertOnSubmit(tentity);
    dc.SubmitChanges();
    }

    /// <summary>
    /// 添加多条记录
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="tentitys"></param>
    public void InsertToMany<T>(DataContext dc, IEnumerable<T> tentitys) where T : class
    {
    var table = dc.GetTable<T>();
    table.InsertAllOnSubmit(tentitys);
    dc.SubmitChanges();
    }

    /// <summary>
    /// 删除单条数据
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="tentity"></param>
    /// <param name="fun"></param>
    public void DeleteOne<T>(DataContext dc, T tentity, Func<T, bool> fun) where T : class
    {
    var table = dc.GetTable<T>();
    var result = table.Where<T>(fun).First<T>();
    table.DeleteOnSubmit(result);
    dc.SubmitChanges();
    }
    /// <summary>
    /// 按条件删除多条数据
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="tentitys"></param>
    /// <param name="fun"></param>
    public void DeleteToMany<T>(DataContext dc, IEnumerable<T> tentitys, Func<T, bool> fun) where T : class
    {
    var table = dc.GetTable<T>();
    var result = table.Where<T>(fun).AsEnumerable<T>();
    table.DeleteAllOnSubmit<T>(result);
    dc.SubmitChanges();
    }

    /// <summary>
    /// 删除多条数据
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="tentitys"></param>
    public void DeleteToManyByCondition<T>(DataContext dc, IEnumerable<T> tentitys) where T : class
    {
    var table = dc.GetTable<T>();
    table.DeleteAllOnSubmit<T>(tentitys);
    dc.SubmitChanges();
    }

    /// <summary>
    /// LINQ更新方法
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dc"></param>
    /// <param name="fun"></param>
    /// <param name="tentity"></param>
    /// <param name="action"></param>
    public void Update<T>(DataContext dc, Func<T, bool> fun, T tentity, Action<T> action) where T : class
    {
    var table = dc.GetTable<T>().Single<T>(fun);
    //var table = dc.GetTable<T>().Where<T>(fun).Single<T>();
    action(table);
    dc.SubmitChanges();
    }
    }
    }

linq to sql DAL的更多相关文章

  1. .NET面试题系列[14] - LINQ to SQL与IQueryable

    .NET面试题系列目录 名言警句 "理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列." - Jon Skeet LINQ to Obje ...

  2. Linq to SQL 类型的对象图包含循环,如果禁用引用跟踪,择无法对其进行序列化。

    在使用Linq to SQL并序列化一个数据对象的时候报System.InvalidOperationException异常,序列化类型 的对象时检测到循环引用. 异常信息(部分): ---> ...

  3. LINQ to Sql系列一 增,删,改

    首先,我们来了解一下LINQ to sql 是什么,我想从以下几点来做说明. 1,LINQ是从.net framework 3.0开始引入的的语言特性,主要是用来对集合数据进行操作的.2,LINQ t ...

  4. LINQ to SQL语句(7)之Exists/In/Any/All/Contains

    适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...

  5. 年终巨献 史上最全 ——LINQ to SQL语句

    LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...

  6. LINQ to SQL语句(20)之存储过程

    在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...

  7. LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

    它基于由 ADO.NET 提供程序模型提供的服务.因此,我们可以将 LINQ to SQL 代码与现有的 ADO.Net 应用程序混合在一起,将当前 ADO.NET 解决方案迁移到 LINQ to S ...

  8. LINQ to SQL语句(18)之运算符转换

    运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...

  9. LINQ to SQL语句(17)之对象加载

    对象加载 延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是 ...

随机推荐

  1. APP测试--测试日报和上线报告

    1 测试日报包含: 1 对当前测试版本质量进行分级 2 对较严重的问题进行举例,提示开发人员优先修改 3 对版本的整体情况进行评估 2 上线报告: 1 对当前版本质量进行分级 2 附上测试报告(功能测 ...

  2. Dash:程序员的好帮手

    Dash 关于Dash是什么.有哪些功能以及该怎么使用,我想直接引用咖啡 生活 美女蛇,这位小伙伴整理的很详细,我这里只说一下Dash的破解方法. 破解 破解补丁下载:Dash3.x_Cracked ...

  3. CentOS7 emacs安装

    首先安装依赖库 依赖库:   yum install gcc*   yum install glib*   yum install gtk*   yum install ncurses*   yum ...

  4. C#获取键盘和鼠标操作的时间的类

    /// /// 创建结构体用于返回捕获时间 /// [StructLayout(LayoutKind.Sequential)] struct LASTINPUTINFO { /// /// 设置结构体 ...

  5. APP测试中的头疼脑热:测试人员如何驱动开发做好自测

    如今,随着移动互联网的浪潮越翻越涌,移动APP测试工作的现状已经成了那本"家家难念"的经.不管公司大小,不管测试哪种类型的APP,让广泛测试者苦不堪言的就属重复性最多,测试工作量最 ...

  6. OutputDebugString输出调试信息到debugtrack

    OutPutDebugString()函数的输出则可以用DebugView捕获(DebugView也可以捕获TRACE宏的输出)eg: OutPutDebugString("输出第一调试信息 ...

  7. JavaScript高级程序设计:第六章

    第六章 面向对象的程序设计 一.理解对象 1.属性类型: ECMAScript中有两种属性:数据属性和访问器属性. (1)数据属性: 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性 ...

  8. JSON.stringify 应用

    原文:https://technet.microsoft.com/zh-cn/sysinternals/cc836459 url JSON.stringify 函数 将 JavaScript 值转换为 ...

  9. jdk and tomcat 环境变量配置

    一.安装JDK和Tomcat 1,安装JDK:直接运行jdk-7-windows-i586.exe可执行程序,默认安装即可. 备注:路径可以其他盘符,不建议路径包含中文名及特殊符号. 2.安装Tomc ...

  10. kafka和flume的对比

    摘要: (1)kafka和flume都是日志系统.kafka是分布式消息中间件,自带存储,提供push和pull存取数据功能.flume分为agent(数据采集器),collector(数据简单处理和 ...