• ●LinQ to SQL


    ORM(O—Object对象,R—Relation关系,M—Mapping映射)

    表名——类名

    列名——属性名

    表的关系——类的成员对象

    LinQ——集成化查询语言               SQL——结构化查询语言

    LinQ包括:LinQ to SQL、LinQ to Object、LinQ to DataSet、LinQ to Entity

    LinQ to SQL

             第一步:建立LinQ to SQL类(项目右键→“添加”→“类”→“数据”中的“LINQ to SQL类”→在服务器资源管理器中添加数据库连接→找到需要的表,拖动到页面)

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

             第三步:操作

    1、增:

                //实例化上下文
                MyDBDataContext context = new MyDBDataContext();
                //1、造对象
                Info data = new Info();
    
                data.Code = "p211";
                data.Name = "周青";
                data.Nation = "N001";
                data.Sex = false;
                data.Birthday = new DateTime(1990, 1, 1);
                //2、在上下文中注册上面新造的对象
                context.Info.InsertOnSubmit(data);
                //3、将数据提交到数据库
                context.SubmitChanges();

    2、删:

                MyDBDataContext context = new MyDBDataContext();
                //1、在Info表中查询Code为“p003”的数据
                var q = context.Info.Where(p => p.Code == "p003");    //var q是动态推导类型,会自动推导数据类型。(p => p.Code == "p003")意思:将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();
                }

    3、改:

            static void Main(string[] args)
            {
                MyDBDataContext context = new MyDBDataContext();
                //1、在Info表中查找Code为“p001”的数据,放入内存
                var q = context.Info.Where(p => p.Code == "p001");
    
                if (q.Count() > 0)
                {
                    Info data = q.First();
                    //2、在内存中修改数据
                    data.Name = "胡生";
                    data.Nation = "n001";
                    data.Sex = false;
    
                    //3、将修改后的数据提交给数据库
                    context.SubmitChanges();
                }
            }

    4、查:

    4.1、查询所有

            static void Main(string[] args)
            {
                MyDBDataContext context = new MyDBDataContext();
                //1、查询Info表中所有数据
                var q = context.Info;
                //2、显示
                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);
                    }
                }
            }

    4.2、按条件查询

                var q = context.Info.Where(p => p.Code == "p211");    //默认返回的是集合
                if (q.Count() > 0//看看集合中是否查出数据来了
                {
                    Info data = q.First();    //取第一个对象出来
                    Console.WriteLine(data.Nation1.Name + data.Name);
                }
                MyDBDataContext context = new MyDBDataContext();
    
                //查询所有
                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");    //Lambda表达式(最最简化的函数)
    
                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 == "一汽丰田");
    
                //分页
                var query = context.Car.Skip(2 * 4).Take(4);
    
                //排序
                var query = context.Car.OrderBy(p => p.Price);  //升序
                var query = context.Car.OrderByDescending(p => p.Price);  //降序
    
                //集合操作
                var query1 = context.Car.Where(p => p.Brand1.Productor.Prod_Name == "一汽丰田");
                var query2 = context.Car.Where(p => p.Price > 30);
    
                //交集
                var query = query1.Intersect(query2);
                //并集
                var query = query1.Union(query2);
                //差集
                var query = query1.Except(query2);
                //补集
                var query = context.Car.Except(query1);
                //LinQ2SQL
                MyDBDataContext context = new MyDBDataContext();
                List<Car> list = context.Car.ToList();    //转成集合
    
                //LinQ2Object ——对内存中的集合操作
                var query = list.OrderBy(p => p.Price);    //按价格排序
  • 相关阅读:
    Katta:基于Lucene可伸缩分布式实时搜索方案
    cnprog
    Eclipse开发struts完全指南(二)安装与配置
    MYSQL 数据库导入导出命令
    ubuntuapache下隐藏thinkphp入口文件index.php
    PHP过滤指定字符串,过滤危险字符
    // 关闭调试模式  define('APP_DEBUG', false);
    Javascript读书笔记(1):从零开始
    Facebook messages实现解读
    《推荐系统实践》
  • 原文地址:https://www.cnblogs.com/phantom-k/p/4173030.html
Copyright © 2020-2023  润新知