在实体框架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]")
.