zoukankan      html  css  js  c++  java
  • EF框架学习(7)---EF中的查询方法

     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));
    }
    复制代码
  • 相关阅读:
    H
    饭卡(0 1背包)
    J
    H
    E
    3991: [SDOI2015]寻宝游戏
    CF 1051 F. The Shortest Statement
    CF 643 E. Bear and Destroying Subtrees
    4567: [Scoi2016]背单词
    4946: [Noi2017]蔬菜
  • 原文地址:https://www.cnblogs.com/zxwDont/p/11097542.html
Copyright © 2011-2022 走看看