2013-05-30 7 views
6

Ich verwende asp.net MVC 3 mit Entity Framework 5. Ich meine .edmx Datei & Lage zu interagieren mit meiner Datenbank Linq oder SP, aber ich möchte einige rohe SQL-Anweisung auszuführen. Ich versuche so etwas:Wie rohe SQL-Abfrage mit in Entity Framework ausführen?

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

ist es möglich, SQL-Abfrage auf diese Weise auszuführen? Vielen Dank.

+0

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

+0

beziehen Sie können auch meine Antwort auf 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 –

Antwort

10

Sie können die folgenden Arten von Abfragen ausführen:

  1. SQL-Abfrage für Entity-Typen, die bestimmte Arten von Unternehmen zurückgibt.

    using (var ctx = new SchoolDBEntities()) 
    { 
    
        var studentList = ctx.Students.SqlQuery("Select * from Student").ToList<Student>(); 
    
    } 
    
  2. SQL-Abfrage für Nicht-Entitätstypen, die einen primitiven Datentyp zurückgibt.

    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. Raw SQL-Befehle an die Datenbank.

     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"); 
    
         } 
    

Sie auch this

5

Das hat funktioniert !!

using (var ctx = new HR()) 
     { 

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

      ctx.SaveChanges(); 
     }