在實體框架4.1和更高版本中,你可以直接執行任意數據源的命令。使用下面的方法,使您能夠執行對數據源的原始的SQL命令
返回特定類型的實體,DbSet上的sqlquery使您能夠執行原始的SQL查詢返回特定的實體實例,默認情況,被返回的實體被tracked by The COntext ,可以通過在 SqlQuery上調用AsNoTracking來改變
using (var context = new SchoolEntities()) { var departments = context.Departments.SqlQuery( "select * from Department").ToList(); }
返回任意類型的數據,DataBase上的SQlquery使你能夠執行sql返回任意類型的數據,被返回的數據沒有被tracked by The COntext,
using (var context = new SchoolEntities()) { var names = context.Database.SqlQuery<string>("select Name from Department").ToList(); }
使用DataBase的ExecuteSqlCommand去更新數據
using (var context = new SchoolEntities()) { context.Database.ExecuteSqlCommand("update Department set Name = 'Mathematics' where Name = 'Math'"); }
使用ExecuteSqlCommand 或者SqlQuery直接指定存儲過程
context.Database.ExecuteSqlCommand ("EXECUTE [dbo].[DoSomething]")
.