.NET Sınıf Kitaplığı Bölüm 6’daki Yenilikler: ADO.NET’te Eşzamansız Yöntemler

Womanne

Member
.NET Framework Sınıf Kitaplığının 4.5 sürümü 947 yeni sınıf içerir. Bir dizi makale, büyük kütüphaneleri ilgilendirmeyen ve bu nedenle kamuoyunun gözünde o kadar da fazla olmayan on yeniliği sunuyor. ZIP dosyalarının oluşturulması en son sunulduktan sonra, 6. bölüm ADO.NET’teki eşzamansız yöntemler hakkındadır.


Connection, Command ve DataReader içeren klasik ADO.NET, yeni eşzamansız göreve yönelik tasarım modeliyle artık .NET 4.5 sınıf kitaplığında veritabanı işlemleri olarak adlandırabileceğiniz yeniliğe öncülük etmiştir. Örneğin, aşağıdaki tabloda listelenen yöntemler yenidir.


Sınıf​

Daha eski yöntem (hala yürürlüktedir)​

Yeni yöntem (ek)​
dbConnection
(veya türetilmiş sınıflar gibi SqlConnection)​
Açık()
OpenAsync()
DbKomutu
(veya türetilmiş sınıflar gibi SqlCommand)​
RunDbDataReader()
Sorgu Dışı Yürüt()

RunReader()
RunScaling()
ExecuteDbDataReaderAsync()
YürütNonQueryAsync()

ExecuteReaderAsync()

YürütScalarAsync()
DbDataReader
(veya türetilmiş sınıflar gibi SqlDataReader)​
Işık()
sonraki sonuç()
ReadAsync()
SonrakiSonuçAsync()

Yeni yöntemler yok DbDataAdapter VE veri kümesi – yine bunun bir işareti veri kümesi artık “son teknoloji” değil.

Aşağıdaki örnek bunu yapacak OpenAsync() VE ExecuteReaderAsync() kullanılmış. İş parçacığı numaraları, yalnızca farklı iş parçacıklarında eşzamansız yürütmeyi belgelemek için çıktı olarak verilir.

public static void run()
{
Console.WriteLine("Run() #1: Aufruf wird initiiert: Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
ReadDataAsync();
Console.WriteLine("Run() #2: Aufruf ist erfolgt: Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
}
/// <summary>
/// Asynchroner Download (Rückgabe: nichts)
/// </summary>
static private async void ReadDataAsync()
{
// Datenbankverbindung asynchron aufbauen
SqlConnection conn = new SqlConnection(@"data source=.;initial
catalog=WWWings6;integrated security=True;
MultipleActiveResultSets=True;App=ADONETClassic");
await conn.OpenAsync();
Console.WriteLine("Nach Open Async: Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
// Daten asynchron abrufen
SqlCommand cmd = new SqlCommand("select top(10) * from flug", conn);
var reader = await cmd.ExecuteReaderAsync();
Console.WriteLine("Nach ExecuteReaderAsync: Thread=" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
// Daten ausgeben
while (reader.Read())
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(reader["Abflugort"]);
Console.ForegroundColor = ConsoleColor.Gray;
}

// Verbindung beenden
conn.Close();
}
}








Önceki listenin çıktısı. Nokta numarası Veriler getirilmeden önce 2’ye ulaşılır.




()



Haberin Sonu
 
Üst