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         }
    排序/集合操作/分页
  • 相关阅读:
    机器学习中的特征缩放(feature scaling)
    vs未能正确加载XXX包,编译时停止工作问题
    Python基础-画图:matplotlib
    深度学习基本知识
    TensorFlow入门:线性回归
    SQLserver中取众位数的写法
    python pip安装报错: ConnectTimeoutError
    TensorFlow安装-Windows
    Python读文件报错:SyntaxError: Non-ASCII character in file
    java 项目连接MySQL数据库
  • 原文地址:https://www.cnblogs.com/zsmj001/p/4133887.html
Copyright © 2011-2022 走看看