DataContext.ExecuteQuery Metod

Definition

Överlagringar

Name Description
ExecuteQuery(Type, String, Object[])

Kör SQL-frågor direkt i databasen.

ExecuteQuery<TResult>(String, Object[])

Kör SQL-frågor direkt i databasen och returnerar objekt.

ExecuteQuery(Type, String, Object[])

Kör SQL-frågor direkt i databasen.

public:
 System::Collections::IEnumerable ^ ExecuteQuery(Type ^ elementType, System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.IEnumerable ExecuteQuery(Type elementType, string query, params object[] parameters);
member this.ExecuteQuery : Type * string * obj[] -> System.Collections.IEnumerable
Public Function ExecuteQuery (elementType As Type, query As String, ParamArray parameters As Object()) As IEnumerable

Parametrar

elementType
Type

Typen av som IEnumerable<T> ska returneras.

Algoritmen för matchande kolumner i resultatet av frågan till fält eller egenskaper i objektet fungerar på följande sätt:

Om ett fält eller en egenskap mappas till ett visst kolumnnamn förväntas kolumnnamnet i resultatuppsättningen.

Om ett fält eller en egenskap inte mappas förväntas en kolumn med samma namn som fältet eller egenskapen i resultatuppsättningen.

Jämförelsen utförs genom att söka efter en skiftlägeskänslig matchning först. Om den här matchningen inte hittas sker en efterföljande sökning efter en skiftlägeskänslig matchning.

Frågan måste returnera alla spårade fält och egenskaper för objektet (förutom de som läses in senare) när alla följande villkor är sanna:

T är en entitet som uttryckligen spåras av DataContext.

ObjectTrackingEnabled är true.

Entiteten har en primärnyckel.

Annars utlöses ett undantag.

query
String

SQL-frågan som ska köras.

parameters
Object[]

Matrisen med parametrar som ska skickas till kommandot. Notera följande beteende:

Om antalet objekt i matrisen är mindre än det högsta antalet som identifieras i kommandosträngen genereras ett undantag.

Om matrisen innehåller objekt som inte refereras till i kommandosträngen genereras inget undantag.

Om en parameter är nullkonverteras den till DBNull.Value.

Returer

En IEnumerable<T> samling objekt som returneras av frågan.

Gäller för

ExecuteQuery<TResult>(String, Object[])

Kör SQL-frågor direkt i databasen och returnerar objekt.

public:
generic <typename TResult>
 System::Collections::Generic::IEnumerable<TResult> ^ ExecuteQuery(System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.Generic.IEnumerable<TResult> ExecuteQuery<TResult>(string query, params object[] parameters);
member this.ExecuteQuery : string * obj[] -> seq<'Result>
Public Function ExecuteQuery(Of TResult) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)

Typparametrar

TResult

Typ av element i den returnerade samlingen.

Parametrar

query
String

SQL-frågan som ska köras.

parameters
Object[]

Matrisen med parametrar som ska skickas till kommandot. Notera följande beteende:

Om antalet objekt i matrisen är mindre än det högsta antalet som identifieras i kommandosträngen genereras ett undantag.

Om matrisen innehåller objekt som inte refereras till i kommandosträngen genereras inget undantag.

Om en parameter är null konverteras den till DBNull.Value.

Returer

IEnumerable<TResult>

En samling objekt som returneras av frågan.

Exempel

I följande exempel visas en användning för den här metoden:

var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName, ContactTitle,
   Address, City, Region, PostalCode, Country, Phone, Fax
   FROM   dbo.Customers
   WHERE  City = {0}", "London");

foreach (Customer c in customers)
    Console.WriteLine(c.ContactName);
Dim customers = db.ExecuteQuery(Of Customer)("SELECT CustomerID, _
    CompanyName, ContactName, ContactTitle, _
   Address, City, Region, PostalCode, Country, Phone, Fax _
   FROM dbo.Customers _
WHERE City = {0}", "London")

For Each c As Customer In customers
    Console.WriteLine(c.ContactName)
Next

Kommentarer

Den här metoden är en direktmekanism för fall där LINQ till SQL inte tillhandahåller ett visst scenario.

Algoritmen för matchande kolumner i resultatet av frågan till fält och egenskaper i objektet fungerar på följande sätt:

  • Om ett fält eller en egenskap mappas till ett visst kolumnnamn förväntas kolumnnamnet i resultatuppsättningen.

  • Om ett fält eller en egenskap inte mappas förväntas en kolumn med samma namn som fältet eller egenskapen i resultatuppsättningen.

  • Jämförelsen utförs genom att först söka efter en skiftlägeskänslig matchning. Om en sådan matchning inte hittas sker en efterföljande sökning efter en skiftlägeskänslig matchning.

  • Frågan måste returnera alla spårade fält och egenskaper för objektet (förutom de som omfattas av uppskjuten inläsning) när allt följande är sant:

    • Om <T> är en entitet som uttryckligen spåras av DataContext.

    • ObjectTrackingEnabled är sant.

    • Entiteten har en primärnyckel.

    Annars utlöses ett undantag.

  • I alla andra fall kan frågan bara hämta en delmängd av de spårade fälten och egenskaperna för objektet.

Gäller för