2013-05-30 2 views
6

엔티티 프레임 워크 5와 함께 asp.net mvc 3을 사용하고 있습니다. 내 .edmx 파일 &은 linq 또는 SP를 사용하여 데이터베이스와 상호 작용할 수 있지만 일부 원시 SQL 문을 실행하려고합니다. 나는 이런 식으로 노력하고있다 :엔티티 프레임 워크에서 원시 SQL 쿼리를 실행하는 방법은 무엇입니까?

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

이런 식으로 SQL 쿼리를 실행할 수 있습니까? 감사.

+0

http://stackoverflow.com/questions/915329/is-it-possible-to-run-native-sql-with-entity-framework – Satpal

+0

http://stackoverflow.com/questions/16807334/execute-raw-sql-query-in-asp-net-mvc-database-first-mode/29147592#29147592 에서 내 대답을 살펴볼 수도 있습니다. [1] : http://stackoverflow.com/questions/16807334/execute-raw-sql-query-in-asp-net-mvc-database-first-mode/29147592#29147592 –

답변

10

당신은 쿼리의 다음과 같은 유형을 실행할 수 있습니다 : 엔티티의 특정 유형을 반환하는 개체 유형에 대한

  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<string>("Select studentname 
        from Student where studentid=1").FirstOrDefault<string>(); 
        } 
    
  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"); 
    
         } 
    

this

5

이것은 효과가 있습니다!

using (var ctx = new HR()) 
     { 

      ctx.Database.ExecuteSqlCommand("insert into Employees values (9, 'Beverage')"); 

      ctx.SaveChanges(); 
     } 
관련 문제