zoukankan      html  css  js  c++  java
  • Entity Framework入门教程(7)--- EF中的查询方法

    这里主要介绍两种查询方法 Linq to entity(L2E)和Sql

      1、L2E查询

      L2E查询时可以使用linq query语法,或者lambda表达式,默认返回的类型是IQueryable,(linq查询默认返回的是IEnumerable),下边给出了一个简单的例子

        //查询名字为ls的用户集合
                 //query语法
                var users = from u in context.UserInfo
                             where u.UserName == "ls"
                            select u;
                 //method语法
                 var users2 = context.UserInfo.Where<UserInfo>(user => user.UserName == "ls");

      linq的使用方法详见linq总结系列(一)---基础部分,其中的CRUD操作都是使用linq的语法,这里就不多啰嗦了~

      2、原生Sql查询和操作

    1.DbSet.SqlQuery()

      返回的结果是DbSqlQuery类型,该类型实现了IEnumberable接口,所以结果集也可以用linq操作

      //查询名字为ls,密码是123321的用户集
               //使用占位符,执行的时候自动生成sql参数,不用担心sql注入
                  var user1 = context.UserInfo.SqlQuery("select * from userinfo where username=@p0 and userpass=@p1", "ls", "123");
      
               //自己设sql参数
                  SqlParameter [] pars= {
                      new SqlParameter("@name", SqlDbType.NVarChar, 20) { Value = "ls" },
                      new SqlParameter("@pass", SqlDbType.NVarChar, 20) { Value="123"}
                  };
                 var user2 = context.Database.SqlQuery<UserInfo>( "select * from userinfo where username=@name and userpass=@pass", pars);
     
         //查询用户人数
                 int count = context.Database.SqlQuery<int>("select count(*) from userinfo").SingleOrDefault();

     2.Database.SqlQuery()

    context.Database对应着底层数据库,Database.SqlQuery用于查询,可以返回任意类型。

    using (var ctx = new SchoolDBEntities())
    {
        //获取ID为1的student的名字
        string studentName = ctx.Database.SqlQuery<string>("Select studentname from Student where studentid=@id", new SqlParameter("@id", 1))
                                .FirstOrDefault();
    }

    3.Database.ExecuteSqlCommand()

    Database.ExecuteSqlCommand()用于通过Sql进行CUD操作,返回int类型(受影响的行数)

    using (var ctx = new SchoolDBEntities())
    {
      //修改
        int noOfRowUpdated = ctx.Database.ExecuteSqlCommand("Update student  set studentname ='changed student by command' where studentid=@id", new SqlParameter("@id", 1));
     //添加
        int noOfRowInserted = ctx.Database.ExecuteSqlCommand("insert into student(studentname) values('New Student')");
     //删除
        int noOfRowDeleted = ctx.Database.ExecuteSqlCommand("delete from student where studentid=@id",new SqlParameter("@id", 1));
    }

    EF系列目录链接:Entity Franmework系列教程汇总

  • 相关阅读:
    Charles抓包工具
    JQuery 实现表单验证,所有验证通过方可提交
    卡巴斯基注册信息清除
    Nginx 404 Not Found 解决办法
    php mysql 多表查询之子查询语句
    搜狗拼音、QQ拼音输入法、2345拼音输入法、百度输入法 、手心输入法对比。(个人体会)
    Notepad++使用-如何导出/导入配置文件
    深蓝词库转换2.4版发布,支持最新的搜狗用户词库备份bin格式
    网站更换服务器,百度站长后台抓取诊断时间
    阿里云代金券领取
  • 原文地址:https://www.cnblogs.com/wyy1234/p/9628399.html
Copyright © 2011-2022 走看看