ObjectQuery<T> 构造函数

定义

初始化 ObjectQuery<T> 类的新实例。

重载

ObjectQuery<T>(String, ObjectContext)

ObjectQuery<T>使用指定的 Entity SQL 命令作为初始查询创建新实例。

ObjectQuery<T>(String, ObjectContext, MergeOption)

使用指定的 Entity SQL 命令作为初始查询和指定的合并选项创建一个新 ObjectQuery<T> 实例。

注解

可以对 ObjectQuery<T> 进行初始化,使之表示单个标量结果而不是标量结果集合。 某些扩展方法要求使用集合结果作为输入。 在这种情况下,当调用其中的一个方法时将引发 ArgumentException。 有关详细信息,请参阅对象查询

当应用程序在运行时生成实体 SQL 查询时,应注意数据源的任何命令长度限制。 实体 SQL 不会对查询中的命令文本的长度强制实施限制。

ObjectQuery<T>(String, ObjectContext)

ObjectQuery<T>使用指定的 Entity SQL 命令作为初始查询创建新实例。

public:
 ObjectQuery(System::String ^ commandText, System::Data::Objects::ObjectContext ^ context);
public ObjectQuery (string commandText, System.Data.Objects.ObjectContext context);
new System.Data.Objects.ObjectQuery<'T> : string * System.Data.Objects.ObjectContext -> System.Data.Objects.ObjectQuery<'T>
Public Sub New (commandText As String, context As ObjectContext)

参数

commandText
String

实体 SQL 查询。

context
ObjectContext

对其执行查询的 ObjectContext

示例

此示例演示如何构造 类的 ObjectQuery<T> 实例。

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Call the constructor with a query for products and the ObjectContext.
    ObjectQuery<Product> productQuery1 =
        new ObjectQuery<Product>("Products", context);

    foreach (Product result in productQuery1)
        Console.WriteLine("Product Name: {0}", result.Name);

    string queryString =
        @"SELECT VALUE product FROM AdventureWorksEntities.Products AS product";

    // Call the constructor with the specified query and the ObjectContext.
    ObjectQuery<Product> productQuery2 =
        new ObjectQuery<Product>(queryString, context);

    foreach (Product result in productQuery2)
        Console.WriteLine("Product Name: {0}", result.Name);

    // Call the constructor with the specified query, the ObjectContext,
    // and the NoTracking merge option.
    ObjectQuery<Product> productQuery3 =
        new ObjectQuery<Product>(queryString,
            context, MergeOption.NoTracking);

    foreach (Product result in productQuery3)
        Console.WriteLine("Product Name: {0}", result.Name);
}

注解

当应用程序在运行时生成实体 SQL 查询时,应注意数据源的任何命令长度限制。 实体 SQL 不会对查询中的命令文本的长度强制实施限制。

另请参阅

适用于

ObjectQuery<T>(String, ObjectContext, MergeOption)

使用指定的 Entity SQL 命令作为初始查询和指定的合并选项创建一个新 ObjectQuery<T> 实例。

public:
 ObjectQuery(System::String ^ commandText, System::Data::Objects::ObjectContext ^ context, System::Data::Objects::MergeOption mergeOption);
public ObjectQuery (string commandText, System.Data.Objects.ObjectContext context, System.Data.Objects.MergeOption mergeOption);
new System.Data.Objects.ObjectQuery<'T> : string * System.Data.Objects.ObjectContext * System.Data.Objects.MergeOption -> System.Data.Objects.ObjectQuery<'T>
Public Sub New (commandText As String, context As ObjectContext, mergeOption As MergeOption)

参数

commandText
String

实体 SQL 查询。

context
ObjectContext

对其执行查询的 ObjectContext

mergeOption
MergeOption

指定此查询所检索的实体应如何与以前对同一 ObjectContext 的查询所返回的实体合并。

示例

在此示例中, ObjectQuery<T> 使用指定的查询 ObjectContext、 和 MergeOption进行初始化。

int productID = 900;
using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    string queryString = @"SELECT VALUE product FROM
        AdventureWorksEntities.Products AS product
        WHERE product.ProductID > @productID";

    ObjectQuery<Product> productQuery1 =
        new ObjectQuery<Product>(queryString,
            context, MergeOption.NoTracking);

    productQuery1.Parameters.Add(new ObjectParameter("productID", productID));

    ObjectQuery<DbDataRecord> productQuery2 =
        productQuery1.Select("it.ProductID");

    foreach (DbDataRecord result in productQuery2)
    {
        Console.WriteLine("{0}", result["ProductID"]);
    }
}

注解

当应用程序在运行时生成实体 SQL 查询时,应注意数据源的任何命令长度限制。 实体 SQL 不会对查询中的命令文本的长度强制实施限制。

适用于