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