• EF删除,查询,Linq查询,Lambda查询,修改链接字符串


    (1)//删除操作
    public bool delete()
    {
    try
    {
    a_context = new AEntities();
    b1 = new Table_1();
    //删除只需要写主键就行了
    b1.id = 3;
    a_context.Entry<Table_1>(b1).State = EntityState.Deleted;
    a_context.SaveChanges();

    return true;
    }
    catch (Exception)
    {
    return false;
    }
    }


    (2)//修改链接字符串
    public void upConnetionString()
    {
    a_context = new AEntities();
    //设置或者修改链接字符串
    a_context.Database.Connection.ConnectionString = "";
    }


    (3)//查询
    public string each()
    {
    //最简单的,通过遍历表实体把里面的内容取出来
    string x = string.Empty;
    a_context = new AEntities();
    foreach (var tb in a_context.Table_1)
    {
    x += tb.name;
    }
    return x;
    }

    (4)//linq查询
    public string LinqEach()
    {
    string bb = string.Empty;
    a_context = new AEntities();
    //linq表达式,安装查询顺序写,一般写sql语句是 select xx from xx where xxx,但实际在数据库中语句执行的顺序是:
    //第一步.from xxx
    //第二步.where xxx
    //第三步.select xxx
    //而按着执行顺序来写语句,则就是linq语法【发音lin ke】

    //tb是变量,和foreach中的变量是一个意思
    //linq查询返回值是IQueryable<T>类型,比如这里是IQueryable<Table_1>,但一把是用var表达。IQueryable<T>实现IEnumerable接口,所以可以进行遍历。

    //【linq to EF】
    //IQueryable<>接口实现类IQueryable接口,而IQueryable里面没有数据,但他里面有三个属性,可以返回查询结构类型,表达式目录树,提供与查询类型相关联的查询程序。这些属性就可以看出是一个工具,用来从数据库中查询数据的。EF框架可以提供多种相关联的查询程序,所有可以linq to object
    //所有不能把IQueryable<>的var看成是变量,他是接口,连接着想对应的查询查询程序,不能缓存的

    //因为提供的是程序,所以IQueryable<>是在数据库端进行过滤,这就是linq to EF
    var x = from tb in a_context.Table_1 //用遍历tb去遍历EF表:a_context.Table_1
    where tb.name == "小明" //这里的where就和if()的判断是一个意思,判断是否符合条件,所有里面用的并且或者都用c#得到||额&&等,返回bool类型,通过where在【数据库端】进行筛选过滤,再把筛选后的结果集加载到内存中来,这是一种高效的语法
    select tb; //select 的内容和SQL语句一样,可以*,
    foreach (var tr in x)
    {
    bb += tr.name +"|"+ tr.id;
    }

    //【linq to object】
    //当linq to object时候,如: a_context.Table_1.ToArray(),返回值类型则变成IEnumerable<out T>,单单只是实现类IEnumerable而已,因为他没有实现IQueryable接口,无法提供对应的查询查询程序,所以只能是在内存中进行查询过滤
    //在内存里进行过滤,linq to object,可以过滤所有继承类IEnumerable接口的类型。
    //可以理解为linq是把内存中的集合/表看成一个数据库表,用sql语句进行查询的过程。返回值是可以foreach遍历的类型。

    var x2 = from tb in a_context.Table_1.ToArray() //用遍历tb去遍历Array,也可以Dictionary等等,各种反正查询的是List类型的经典集合,不再是EF这样的数据库模型表。是集合...,这是表中的数据全部加载到内存中,如果有1亿条数据呢?....
    where tb.name == "小明"
    select tb;

    //linq 可以 to 任何类型
    return bb;
    }

    (5)//lambda查询
    //lambda查询,linq查询和lambda在运行阶段性能是一样的。但编译阶段不同而已(一个linq编译一个lambda编译),编译时间慢点久点没啥关系...所以用这两个一样
    //这个语法查询好看点..
    public void lambdaEach()
    {
    a_context =new AEntities();
    var dt = a_context.Table_1.Where(u=>u.age>0);
    foreach (var u in dt) { }
    }


    (6)//排序,分页
    public void fenYe()
    {
    //Skip越过的意思,Take获取的意思
    a_context = new AEntities();
    var tb = a_context.Table_1.Where(u => u.age > 0).OrderBy(u => u.id);//默认是升序
    var tb2 = a_context.Table_1.Where(u => u.age > 0).OrderByDescending(u => u.id);//这个是降序
    //分页,分页语句没有最好,只有最合适具体情况
    var tb3 = a_context.Table_1.Where(u => u.age > 0).OrderByDescending(u => u.id).Skip(5 * (3 - 1)).Take(5);//越过(5 * (3 - 1))条,取(5)条

    var tb4 = from u in a_context.Table_1
    orderby u.id ascending //linq排序
    select u;

    var tb5 = (from u in a_context.Table_1
    orderby u.id ascending
    select u).Skip(5 * (3 - 1)).Take(5); //分页
    }


    (7)//查询部分
    public void eachBf()
    {

    a_context = new AEntities();
    //linq
    var tb = from u in a_context.Table_1
    select u.name; //和sql语句一样,这样只查询name的值
    var tb2 = from u in a_context.Table_1
    select new { u.name, u.id, xx = u.name.Count() }; //查询多个用new创建匿名函数来用,xx = u.name.Count()获取行数,只要能点出来就能进行查询,叼...
    //lambda
    var tb3 = a_context.Table_1.Where(u => u.age > 0).Select(u => new { u.id,u.name,xx=u.name.Count() });
    }

  • 相关阅读:
    开发者账号续期后,itunes停止付款了
    复杂sql分组查询 ( pivot)
    免费真机调试 -- Xcode7
    System.Security.Cryptography.CryptographicException: 指定了无效的提供程序类型
    phonegap创建的ios项目推送消息出现闪退现象
    这周的《财经郎眼
    <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
    ios线程和GCD和队列同步异步的关系
    <转>关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
    为什么我们要做单元测试?(二)
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5698534.html
Copyright © 2020-2023  润新知