当前位置: 首页 > 面试题库 >

如何在实体框架中执行原始SQL查询?

华福
2023-03-14
问题内容

我正在使用带有实体框架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查询?谢谢。


问题答案:

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

  1. 对实体类型的SQL查询,该查询返回特定类型的实体。

    using (var ctx = new SchoolDBEntities())
    

    {

     var studentList = ctx.Students.SqlQuery("Select * from Student").ToList<Student>();
    

    }

  2. 非实体类型的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 (“Select studentname
    from Student where studentid=1”).FirstOrDefault ();
    }

  3. 将原始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");
    
       }
    

你也可以参考这个



 类似资料:
  • 问题内容: 如何在SQLAlchemy中执行原始SQL? 我有一个在烧瓶上运行的python Web应用程序,并通过SQLAlchemy连接到数据库。 我需要一种运行原始SQL的方法。该查询涉及多个表联接以及内联视图。 我试过了: 但是我不断收到网关错误。 问题答案: 你有没有尝试过: 要么:

  • 问题内容: 有没有一种方法可以显示执行查询时Django正在运行的SQL? 问题答案: 请参阅文档FAQ:“如何查看Django正在运行的原始SQL查询? ” 包含SQL查询的列表: 查询集还具有包含要执行的查询的属性: 请注意,查询的输出不是有效的SQL,因为: “ Django实际上从未插值参数:它将查询和参数分别发送到数据库适配器,后者执行适当的操作。” 来自Django错误报告#17741

  • 如何在SQLAlchemy中执行原始SQL? 我有一个在flask上运行的python web应用程序,它通过SQLAlchemy与数据库接口。 我需要一种方法来运行原始SQL。查询涉及多个表连接以及内联视图。 我试过: 但我总是会遇到网关错误。

  • 问题内容: 因此,我有一个很小的查询可以在我的数据库上运行,并且在MySQL Workbench中可以正常工作。基本上,再次使用带有左联接的SELECT和带有左联接的UNION。 在尝试将其翻译为Laravel时没有成功。 我遇到了错误 Builder.php 1249行中的ErrorException:未定义的属性:Illuminate \ Database \ Eloquent \ Build

  • 因此,我在数据库上运行了这个小查询,它在MySQL工作台上运行良好。基本上,使用左连接进行选择,然后再次使用左连接进行并集。 年,他试图把它翻译成拉威尔,但没有成功。 我发现了错误 生成器中的错误异常。php第1249行:未定义的属性:Illumb\Database\Eloquent\Builder::$bindings 我如何在Laravel中执行一个完全原始的查询,或者如何在Laravel中以

  • 问题内容: 我正在将子系统从 NHibernate 移植到 Entity Framework, 并希望看到将以下查询移植到 EF 的最佳方法。 帐户余额类别为: 该表是: 示例数据是(使用数字ID可以更好地理解): 该 AccountBalanceByDate 实体持有某一天的账户余额。如果某天没有交易,则该天将没有 AccountBalanceByDate ,我们应该查看前几天以查看该帐户的余额