Bir yazılım geliştirilirken geliştirilme aşamasında hangi Veri Tabanı Yönetim Sisteminin (VTYS) kullanılacağı bilinmiyorsa bu durum sorun oluşturan bir durumdur. Büyük projelerde genellikle ilk olarak kullanılacak olan Veri Tabanı Yönetim Sistemi belirlenir ve ardından da DataBase tasarımına geçilir. Peki kullanılacak olan VTYS'mine karar veme süresi uzadı ise ne olacak? Karşınızda 2 seçenek var. Ya bekleyip projeyi geçici bir süre bekletip bu kararın daha hızlı alınmasını sağlamak ya da ADO.NET'te bulunan Provider Factory'leri kullanmak. Provider Factory'ler ile birlikte ilk olarak veriye erişim katmanını sanki tablolar varmış gibi hazırlayıp daha sonra sağlayıcı seçebiliyorsunuz ve seçilen sağlayıcıya göre kodlarınız çalıştırılıyor.
ProviderFactory'ler System.Data.Common NameSpace'i altında yer alır. Factory'leri kullanmak için ilk olarak bir tane DbProviderFactory oluşturuyoruz. Daha sonra kullanılacak olan diğer nesneleri tanımladığımız DbProviderFactory'den oluşturarak veri işlemlerini kolayca yapabiliyoruz. Aşağıdaki kodlarda ProviderFactory kullanımını görmektesiniz. Dikkat edilecek olursa kullanımı oldukça kolay ve kullanışlı. Tabi burada sağlayıcıyı koddan belirttik ama gerçek hayat senaryolarında sağlayıcının web.config içerisinde saklanıp oradan alınması son derece mantıklı bir durum olacaktır.
DbProviderFactory provider = DbProviderFactories.GetFactory("System.Data.SqlClient");
DbConnection baglanti = provider.CreateConnection();
baglanti.ConnectionString = "Data Source=.\\SQL2005; Initial Catalog=AdventureWorks; Integrated Security=True";
DbCommand komut = provider.CreateCommand();
komut.CommandText = "Select * From Production.ProductCategory";
komut.Connection = baglanti;
DbDataReader reader;
baglanti.Open();
reader = komut.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader[0].ToString()+" "+reader[1]);
}
baglanti.Close();