sql - 如何在 Entity Framework 中执行原始SQL查询?

标签 sql asp.net-mvc-3 entity-framework-5 edmx

我正在使用带有 Entity Framework 5的asp.net mvc3。我有.edmx文件,并能够使用linq或SP与数据库交互,但是我想运行一些原始的sql语句。我正在尝试这样的事情:

Using(var ctx=new HREntities())
{
  ctx.Database.ExecuteSqlCommand("insert into Employees values {0}, {1}",   model.EMPLOYEEID, model.EMPLOYEENAME);
  ctx.SaveChanges();
}

是否有可能以这种方式执行sql查询?谢谢。

最佳答案

您可以执行以下类型的查询:

  • 用于查询实体类型的SQL查询,该查询返回特定类型的实体。
    using (var ctx = new SchoolDBEntities())
     {
    
         var studentList = ctx.Students.SqlQuery("Select * from Student").ToList<Student>();
    
    }
    
  • 用于非实体类型的SQL查询,该查询返回原始数据类型。
    using (var ctx = new  SchoolDBEntities())
    {
    
    var studentName = ctx.Students.SqlQuery("Select studentid, studentname 
        from Student where studentname='New Student1'").ToList();
    }
    
    
     //Error
     using (var ctx = new SchoolDBEntities())
     {                
         //this will throw an exception
         var studentName = ctx.Students.SqlQuery("Select studentid as id, studentname as name 
            from Student where studentname='New Student1'").ToList();
     }
    
     //SQL query for non-entity types:
      using (var ctx = new SchoolDBEntities())
      {
           //Get student name of string type
          string studentName = ctx.Database.SqlQuery<string>("Select studentname 
        from Student where studentid=1").FirstOrDefault<string>();
      }
    
  • 到数据库的原始SQL命令。
          using (var ctx = new SchoolDBEntities())
          {
    
               //Update command
               int noOfRowUpdated = ctx.Database.ExecuteSqlCommand("Update student 
            set studentname ='changed student by command' where studentid=1");
              //Insert command
             int noOfRowInserted = ctx.Database.ExecuteSqlCommand("insert into student(studentname) 
            values('New Student')");
             //Delete command
             int noOfRowDeleted = ctx.Database.ExecuteSqlCommand("delete from student 
            where studentid=1");
    
           }
    

  • 您也可以引用this

    关于sql - 如何在 Entity Framework 中执行原始SQL查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828974/

    相关文章:

    asp.net-mvc-3 - 使用 Autofac 将属性注入(inject)到自定义 WebViewPage

    asp.net-mvc-3 - OutputCache 属性和 jQuery Ajax 不缓存

    c# - 如何在不使用 TryUpdateModel() 的情况下更新数据库

    sql - 我有一张表,其中包含一组购买的产品及其总数量。如何获得当月最低数量的产品?

    python - 谷歌应用引擎、云 sql 和 django : no rdbms backend module

    c# - 使用模型作为参数将操作重定向到其他区域的操作

    c# - Entity Framework 和 WPF 数据网格绑定(bind)

    entity-framework - 是否可以将 Entity Framework Code First 与未完全使用 EF 的现有数据库一起使用?

    用于查询的 XML 格式的 SQL Server 执行计划太大,无法完整显示或保存

    sql - GROUP BY 的 COUNT(*) 个