zoukankan      html  css  js  c++  java
  • 20141129 LinQ to SQL

    ORM
    O-Object对象
    R-Relation关系
    M-Mapping映射
    对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

    O -- M -- R

    表名-类名
    列名-属性名
    表的关系-类的成员对象

    LinQ 集成化查询语言 SQL-结构化查询语言
    LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
    LinQ包括:LinQ to SQL,LinQ to Object,LinQ to DataSet,LinQ to Entity

    LinQ to SQL
    第一步:建立LinQ2SQL类


    第二步:实例化上下文对象。

    MyDBDataContext context = new MyDBDataContext();
    第三步:操作

    一、增:
    1.造对象。
    Info data = new Info();
    data.Code = "p211";
    data.Name = "周青";
    data.Sex = false;
    data.Nation = "N001";
    data.Birthday = new DateTime(1990, 1, 2);

    2.在上下文中注册上面新造的对象。
    context.Info.InsertOnSubmit(data);

    3.提交
    context.SubmitChange();

    二、删:
    MyDBDataContext context = new MyDBDataContext();
    //1.找
    var q = context.Info.Where(p => p.Code == "p003");

    if (q.Count() > 0)
    {
    Info data = q.First();
    //2.注册
    context.Work.DeleteAllOnSubmit(data.Work);
    context.Family.DeleteAllOnSubmit(data.Family);
    context.Info.DeleteOnSubmit(data);
    //3.提交
    context.SubmitChanges();
    }
    三、改:
    1.找
    2.改
    3.提交
    四、查:
    查询所有
    MyDBDataContext context = new MyDBDataContext();
    //所有人员
    var q = context.Info;
    //显示
    foreach(Info data in q)
    {
    //data.Nation1:当前人员对应的民族对象。
    Console.WriteLine(data.Name+" "+data.Nation1.Name);
    //data.Work:当前人员对应的工作记录集合
    foreach (Work work in data.Work)
    {
    Console.WriteLine(" "+work.Firm+" "+work.Depart);
    }
    }
    根据主键查询
    var q = from p in context.Info where p.Code == "p211" select p;
    var q = context.Info.Where(p => p.Code == "p211").Where(p => p.Nation1.Name == "汉族"); //Lambda表达式(最最简化的函数)
    var q = context.Info.Where(p => p.Code == "p211" && p.Nation1.Name=="汉族");
    以上查询默认返回的都是集合。

    查询主键对象:
    var q = context.Info.Where(p => p.Code == "p211"); //默认返回的是集合
    if (q.Count() > 0) //看看集合中是否查出数据来了
    {
    Info data = q.First(); //取第一个对象出来
    Console.WriteLine(data.Nation1.Name + data.Name);
    }

    查询所有
    var q = from p in context.Info select p;
    var q = context.Info;

    但条件查询
    var q = from p in context.Info where p.Code=="p003" select p;
    var q = context.Info.Where(p => p.Code=="p003");

    多条件查询
    var q = from p in context.Car where p.Price > 30 && p.Brand=="b002" select p;
    var q = context.Car.Where(p => p.Price > 30 && p.Brand == "b002");
    var q = context.Car.Where(p => p.Price > 30).Where(p => p.Brand == "b002");

    var q = from p in context.Car where p.Price > 30 || p.Brand == "b002" select p;
    var q = context.Car.Where(p => p.Price > 30 || p.Brand == "b002");

    模糊查询:
    var q = from p in context.Car where p.Name.Contains("5") select p; //包含
    var q = from p in context.Car where p.Name.StartsWith("奥迪") select p;//开头
    var q = from p in context.Car where p.Name.EndsWith("奥迪") select p;//结尾
    var q = context.Car.Where(p => p.Name.Contains("5"));//包含
    var q = context.Car.Where(p => p.Name.StartsWith("奥迪"));//开头
    var q = context.Car.Where(p => p.Name.EndsWith("型"));//结尾
    var q = from p in context.Car where p.Name.Substring(2, 1) == "5" select p;//第三个字符
    var q = context.Car.Where(p => p.Name.Substring(2,1) == "5");//第三个字符是5

    Distinct查询
    var q = (from p in context.Car select p.Brand).Distinct();//去重
    var q = context.Car.Select(p=>p.Brand).Distinct();//去重

    连接查询——对象之间的关联关系点出来的。
    var q = context.Car.Where(p => p.Brand1.Productor.Prod_Name=="一汽丰田");

     1             //统计函数
     2             MyDBDataContext context = new MyDBDataContext();
     3             var query = from p in context.Car select p;
     4             //var query = context.Car;
     5             Console.WriteLine(query.Count());
     6             Console.WriteLine(query.Max(p => p.Price));
     7             Console.WriteLine(query.Min(p => p.Price));
     8             Console.WriteLine(query.Max(p => p.Price * p.Oil));//可以以积的形式表示
     9             Console.WriteLine(query.Sum(p => p.Price));
    10             Console.WriteLine(query.Sum(p => p.Price * p.Oil));
    11             Console.WriteLine(query.Average(p => p.Price));
    统计函数
     1         public static void Main(string[] args)
     2         {
     3             //分页
     4             MyDBDataContext context = new MyDBDataContext();
     5             var query = context.Car.Skip(2 * 4).Take(4);
     6             Show(query);
     7 
     8             //排序
     9             //MyDBDataContext context = new MyDBDataContext();
    10             ////var query = context.Car.OrderBy(p=>p.Price); //升序
    11             //var query = context.Car.OrderByDescending(p => p.Price);//降序
    12             //Show(query);
    13 
    14             //集合操作
    15             //MyDBDataContext context = new MyDBDataContext();
    16             //var query1 = context.Car.Where(p => p.Brand1.Productor.Prod_Name=="一汽丰田");
    17             //var query2 = context.Car.Where(p => p.Price > 30);
    18 
    19             ////交集
    20             //var query = query1.Intersect(query2);
    21             ////并集
    22             ////var query = query1.Union(query2);
    23             ////差集
    24             ////var query = query1.Except(query2);
    25             ////补集
    26             ////var query = context.Car.Except(query1);
    27 
    28             //Show(query);
    29         }
    30 
    31         static void Show(IEnumerable<Car> cars)
    32         {
    33             foreach (Car data in cars)
    34             {
    35                 Console.WriteLine(data.Name + "	"+data.Brand1.Productor.Prod_Name+"	" + data.Price);
    36             }
    37         }
    排序/集合操作/分页
  • 相关阅读:
    HDU 5583 Kingdom of Black and White 水题
    HDU 5578 Friendship of Frog 水题
    Codeforces Round #190 (Div. 2) E. Ciel the Commander 点分治
    hdu 5594 ZYB's Prime 最大流
    hdu 5593 ZYB's Tree 树形dp
    hdu 5592 ZYB's Game 树状数组
    hdu 5591 ZYB's Game 博弈论
    HDU 5590 ZYB's Biology 水题
    cdoj 1256 昊昊爱运动 预处理/前缀和
    cdoj 1255 斓少摘苹果 贪心
  • 原文地址:https://www.cnblogs.com/zsmj001/p/4133887.html
Copyright © 2011-2022 走看看