65.9K
CodeProject 正在变化。 阅读更多。
Home

EF Feature CTP5:原始 SQL 查询/命令支持

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2010 年 12 月 8 日

CPOL

1分钟阅读

viewsIcon

16050

EF Feature CTP5:原始 SQL 查询/命令支持

EF feature CTP5 的一项新功能是通过 DbContext 支持原始 SQL 查询/命令。 在本文中,我将向您展示如何使用此功能的示例。 请注意,我提供的信息可能会在未来发生变化,因为它只是 CTP,而不是正式发布版。

DbContext 原始 SQL 查询/命令支持

EF feature CTP5 支持通过 DbContext 执行原始 SQL 查询和命令。 这种行为类似于 ObjectContext 提供的相同功能,该功能由 ExecuteStoreQuery<T>ExecuteStoreCommand 方法公开。 您可以使用 DbContextSqlQuery SqlCommand 方法,这些方法由 DbContext.Database 属性公开。 方法执行的结果可以被物化为可以被 DbContext 跟踪的实体。 以下是如何使用这些方法的示例

class Program
{
  static void Main(string[] args)
  {
    using (SchoolEntities context = new SchoolEntities())
    {
      IEnumerable sqlQuery = context.Database.SqlQuery(typeof(Department), 
        "select * from department");
      foreach (Department item in sqlQuery)
      {
        Console.WriteLine(item.Name);
      }
 
      sqlQuery = context.Database.SqlQuery(typeof(Course), "GetCoursesOrderByTitle");
      foreach (Course item in sqlQuery)
      {
        Console.WriteLine(item.Title);
      }
 
      var numberOfAffectedRows = context.Database.SqlCommand(
        "DeleteDepartment @DepartmentID", new SqlParameter("DepartmentID", 8));
      Console.WriteLine("Number of affected rows: {0}", numberOfAffectedRows);
    }
  }
}

在使用了与我先前示例相同的模型的程序中,我执行了两个查询(一个是原始 SQL,另一个是使用存储过程)和一个命令。 执行结果如下所示

Running Result

摘要

总结一下 - 新的 CTP 允许运行原始 SQL 查询/命令。 这在 EF 无法支持或高级场景中非常有用。

© . All rights reserved.