DataContext.ExecuteQuery Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
ExecuteQuery(Type, String, Object[]) |
SQL sorgularını doğrudan veritabanında yürütür. |
ExecuteQuery<TResult>(String, Object[]) |
SQL sorgularını doğrudan veritabanında yürütür ve nesneleri döndürür. |
ExecuteQuery(Type, String, Object[])
SQL sorgularını doğrudan veritabanında yürütür.
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
Parametreler
- elementType
- Type
Döndürülecek öğesinin IEnumerable<T> türü.
Sorgu sonucundaki sütunları nesnedeki alanlarla veya özelliklerle eşleştirme algoritması aşağıdaki gibi çalışır:
Bir alan veya özellik belirli bir sütun adıyla eşlenmişse, sonuç kümesinde bu sütun adı beklenir.
Bir alan veya özellik eşlenmemişse, sonuç kümesinde alan veya özellik ile aynı ada sahip bir sütun beklenir.
Karşılaştırma, önce büyük/küçük harfe duyarlı eşleşme aranarak gerçekleştirilir. Bu eşleşme bulunamazsa, büyük/küçük harfe duyarlı olmayan bir eşleşme için sonraki bir arama yapılır.
Sorgu, aşağıdaki koşulların tümü doğru olduğunda nesnenin tüm izlenen alanlarını ve özelliklerini (ertelenmiş olarak yüklenenler dışında) döndürmelidir:
T
, tarafından açıkça izlenen bir varlıktır DataContext.
ObjectTrackingEnabled, true
değeridir.
Varlığın birincil anahtarı vardır.
Aksi takdirde bir özel durum oluşturulur.
- query
- String
Yürütülecek SQL sorgusu.
- parameters
- Object[]
Komutuna geçirilecek parametre dizisi. Aşağıdaki davranışa dikkat edin:
Dizideki nesne sayısı, komut dizesinde tanımlanan en yüksek sayıdan küçükse, bir özel durum oluşturulur.
Dizi, komut dizesinde başvurulmayan nesneler içeriyorsa, hiçbir özel durum oluşturulur.
Bir parametre ise null
, değerine dönüştürülür DBNull.Value
.
Döndürülenler
IEnumerable<T> Sorgu tarafından döndürülen nesne koleksiyonu.
Şunlara uygulanır
ExecuteQuery<TResult>(String, Object[])
SQL sorgularını doğrudan veritabanında yürütür ve nesneleri döndürür.
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)
Tür Parametreleri
- TResult
Döndürülen koleksiyondaki öğelerin türü.
Parametreler
- query
- String
Yürütülecek SQL sorgusu.
- parameters
- Object[]
Komutuna geçirilecek parametre dizisi. Aşağıdaki davranışa dikkat edin:
Dizideki nesne sayısı, komut dizesinde tanımlanan en yüksek sayıdan küçükse, bir özel durum oluşturulur.
Dizi, komut dizesinde başvurulmayan nesneler içeriyorsa, hiçbir özel durum oluşturulur.
Bir parametre null ise, değerine dönüştürülür DBNull.Value
.
Döndürülenler
Sorgu tarafından döndürülen nesne koleksiyonu.
Örnekler
Aşağıdaki örnekte bu yöntem için tek bir kullanım gösterilmektedir:
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
Açıklamalar
Bu yöntem, LINQ to SQL belirli bir senaryo için sağlamadığı durumlar için bir geçiş mekanizmasıdır.
Sorgunun sonucundaki sütunları nesnedeki alanlara ve özelliklere eşleştirme algoritması aşağıdaki gibi çalışır:
Bir alan veya özellik belirli bir sütun adıyla eşlenmişse, sonuç kümesinde bu sütun adı beklenir.
Bir alan veya özellik eşlenmemişse, sonuç kümesinde alan veya özellik ile aynı ada sahip bir sütun beklenir.
Karşılaştırma, önce büyük/küçük harfe duyarlı eşleşme aranarak gerçekleştirilir. Böyle bir eşleşme bulunamazsa, büyük/küçük harfe duyarlı olmayan bir eşleşme için sonraki bir arama yapılır.
Sorgu, aşağıdakilerin tümü doğru olduğunda nesnenin tüm izlenen alanlarını ve özelliklerini (ertelenmiş yükleme konusu dışında) döndürmelidir:
varlığı tarafından açıkça izleniyorsa
<T>
DataContext.ObjectTrackingEnabled true.
Varlığın birincil anahtarı vardır.
Aksi takdirde bir özel durum oluşturulur.
Diğer tüm durumlarda sorgu, nesnenin izlenen alanlarının ve özelliklerinin yalnızca bir alt kümesini alabilir.