ergen örnekleri. AĞ. ADO teknolojileri. NET Framework, CORBA

N katmanlı mimari mimarlar yeni bir teknolojiyi, modeli veya stratejiyi değerlendirirken, yapbozun bu yeni parçasının mimariye nasıl uyacağına karar verirler. Entity Framework varsa entegrasyon herhangi bir zorluk yaratmaz. Tek katmanlı mimarinin yanı sıra n katmanlı mimariye de entegre edilebilir.

19.03.2009 15:32

Entity Framework SSS

Varlık modellemeyi anlamak, bu tür modelleri ilişkisel veritabanlarıyla eşleştirmek ve Varlık Veri Modellerini (EDM'ler) tasarlamak, Varlık Çerçevesini anlamanın ilk adımlarıdır. Bu makaleye, ObjectContext sınıfı da dahil olmak üzere Entity Framework'ün temelleri hakkındaki soruları yanıtlayarak başlayacağım ve ardından Entity Client'ın Entity SQL ile ne zaman ve nerede kullanılacağına ilişkin soruları yanıtlayacağım. Ek olarak, EntityClient ve Object Services arasındaki farkı ve bu servislerle birlikte LINQ ve Entity SQL sorgularını kullanmanın etkilerini açıklamayı planlıyorum.

16.02.2009 15:15

ADO.NET Entity Framework'e Genel Bakış

Visual Studio 2008'in piyasaya sürülmesiyle ADO.NET, yeni bir Entity Framework mimarisi sunar. Geliştiricilerin mantıksal veya ilişkisel veri modeli yerine bir nesne modeli kullanarak verilere erişmesine olanak tanır. Entity Framework, mantıksal veri şemasını kavramsal modele soyutlamaya yardımcı olur ve Object Services ve EntityClient adlı yeni bir veri sağlayıcı aracılığıyla kavramsal modelle etkileşim kurmanın birkaç yolunu sunar. Bu ayın makalesi Entity Framework'ün ne olduğunu, bir uygulamaya nasıl uygulanacağını ve bu çerçeveyle nasıl tasarlanıp programlanacağını tartışıyor.

13.02.2009 18:44

Entity Framework ile Entity Data Modeli Geliştirme

Entity Framework, ADO.NET için geliştirilmiş yeni bir teknolojidir. Geliştiricilerin, bir miktar geliştirme esnekliği sağlayan fiziksel bir model yerine mantıksal bir model kullanarak verileri görselleştirmesine olanak tanır. Derginin Temmuz 2007 sayısında, Veri Noktaları bölümünde Entity Framework teknolojisinin ayrıntılı bir özetini verdik (resmi olarak 2008'in ilk yarısında piyasaya sürülmelidir).

13.02.2009 18:33

Ticari Varlıkları Normalleştirmek ve Doğrulamak için Nitelikleri Kullanma

Kurumsal programlamada, bir veri erişim katmanı tasarlarken, genellikle iş nesneleri (iş varlıkları) ile çalışma sorunu ortaya çıkar: bunlar yükleme / değiştirme / kaydetme ve seviyeler arasında hareket etmedir. Bunun için iki ana yaklaşım vardır - kendi ticari varlıklarınızı veya standart araçlarınızı kullanmak (ADO.NET bunu yapmak için oldukça uygun yollar sağlar) - bir DataSet kullanmak.

20.01.2007 03:54

ADO.NET: Teknolojiye Genel Bakış

Microsoft platformlarında veritabanlarıyla çalışan birçok programcı, ADO teknolojisi - ActiveX Data Objects'in basitliğini ve rahatlığını takdir edebilir. Sezgisel bir arayüz ve mantıksal bir nesne seti, programlama kolaylığı ile birlikte, programcılardan hak ettiği şekilde takdir görmüştür. Buna rağmen, yeni .NET platformuyla birlikte Microsoft, yeni nesil veritabanı erişim araçları olan ADO.NET'i de sunar.

27.12.2006 01:32

Hiyerarşik bir yapıya sahip veriler üzerinde işlemler. .NET'te dağıtılmış uygulamalar geliştirme

Bu makale, bir veri kaynağında hiyerarşik satır kümelerini okuma ve yazma tekniğini gösterir. Bu makaledeki kod örnekleri, bir Microsoft SQL Server veya Microsoft Desktop Engine (MSDE) veritabanına bağlanmak için SQL tarafından yönetilen bir sağlayıcı kullanır. Diğer OLEDB uyumlu veri kaynaklarına bağlanmak için ADO tarafından yönetilen sağlayıcıyı kullanın.

27.12.2006 01:26

ADO.NET'te Çevrimdışı Verilerle Çalışmak

ADO.NET teknolojisi, önceki ADO ve OLE DB'den farklı olarak, kalıcı veritabanı bağlantılarının olmadığı web uygulamalarında kullanılmak üzere özel olarak geliştirilmiştir. ADO.NET'te verilerle geleneksel çalışma şu şemaya dayanır: Bir Bağlantı oluşturulur, ardından Open yöntemiyle açılır, SQL komutunu kapsayan bir Komut nesnesi oluşturulur, yürütülür ve ardından bağlantı kapatılır. Bu yaklaşım, sorgu sonuçlarına iş parçacıklı erişim sağlar. Şunlar. DataReader ile veri okurken birden fazla kaydın üzerinden atlayamaz veya bir öncekine dönemezsiniz. Akış erişimi maksimum performansa sahiptir.

Sayfa koduna sorgu yazanlara ithafen...

Herkese selamlar!

Habré hakkında, VisualStudio 2008'in bir sonraki sürümünün ADO.NET EntityFramework'e sahip olacağına dair bazı bilgiler var. (Size bir sır vereceğim, bu sürüm zaten çıktı.) Bu geliştirme, projeniz için birkaç fare tıklamasıyla veri mantığı oluşturmanıza olanak tanıyan evrensel bir çerçevedir.
Şu ana kadar data mantığı ile çalışarak 2 tip proje ile karşılaştım. İlki kötü şöhretli NHibernate çerçevesinde oluşturuldu, diğerleri programcılar tarafından uygulandı. Zaten 3 yıldır çeşitli sistemler yazıp geliştiriyorum ve bunca zamandır sadece bu tutamaçlarla çalışma mantığını geliştiriyorum.
Ve böylece geçen gün, yeni bir Windows kurduktan sonra VisualStudio WebDeveloper Express'i indirdim ve pakette ADO.NET EntityFramework'ü bulduğum için mutlu oldum. Bir süre sonra bir alan adı kaydettim, basit bir web sitesi oluşturdum ve gücümü bu çerçeve için programlar yazma konusunda eğitmeye başladım.

Öncelikle bir veritabanı ile basit bir Web projesi oluşturmanız gerekir. Ayrıca Veritabanına Veri Tabanı Gezgini üzerinden hemen bağlanmak da güzel olurdu. Sadece daha sonra daha uygun olacak.

Bundan sonra projeye yeni bir eleman "ADO.NET Entity Data Model" eklenmelidir.

Sistemin, veritabanına bağlanmak için bir dize belirtmesinin yanı sıra ilk ADO.NET EF modelinin nereden geleceğini belirtmesi gerekecektir.

Veritabanımda zaten çok basit iki Post ve User tablom var, bu yüzden daha fazla uzatmadan sistemi veritabanıma dayalı bir model oluşturmaya zorladım. Tüm bu çok basit adımlardan sonra, çalışan bir veritabanı modelim oldu. Ayrıca, bu modeli görsel olarak inceledikten sonra, koda bakmayı ve çerçevenin tüm sınıflarımı nasıl tanımladığını görmeyi unutmadım.

  1. ad alanı Veri TabanıÇekirdeği
  2. ///
  3. /// Şemada DbModel için yorum yok.
  4. ///
  5. genel kısmi sınıf DbModel: global::System.Data.Objects.ObjectContext
  6. ///
  7. /// Uygulama yapılandırma dosyasının "DbModel" bölümünde bulunan bağlantı dizesini kullanarak yeni bir DbModel nesnesini başlatır.
  8. ///
  9. genel DbModel() :
  10. base("name=DbModel", "DbModel")
  11. bu .OnContextCreated();
  12. /* Gereksiz olarak kırpıldı */
  13. genel kısmi sınıf Gönderi: global::System.Data.Objects.DataClasses.EntityObject
  14. ///
  15. /// Yeni bir Post nesnesi oluşturun.
  16. ///
  17. /// Id'nin başlangıç ​​değeri.
  18. genel statik Post CreatePost(int id)
  19. Gönderi gönderisi = yeni Gönderi();
  20. post.Id = kimlik;
  21. gönderiyi iade et;

Bir veri mantığı uzmanının eğitimli gözü, hem sistemdeki mesajlarla hem de kullanıcılarla çalışmayı sağlayan oldukça basit ve zarif bir sınıfın varlığını gösterdi.

Pekala, zaten kodumuz var, sadece kullanmaya başlamak için kalıyor. Ve burada, ASP.NET'in tüm cazibesi ve olanakları bize ifşa ediliyor. Sayfadaki çok sayıda veri kaynağı arasında, sınıfımızdan istek üzerine memnuniyetle veri sağlayan Entity Data Source'u gördüm. Forma sürükler, kurulum sihirbazını başlatır ve veri kaynağını hızlı bir şekilde posta tablomuza ekleriz.

Şüphesiz, ASPX kodundaki datasort açıklaması çok daha keyifli hale geldi.

  1. < asp:EntityDataSource ID ="dsPosts" runat ="server" ConnectionString ="name=DbModel"
  2. DefaultContainerName ="DbModel" EntitySetName ="Post" >
* Bu kaynak kodu, Kaynak Kodu İşaretleyici ile vurgulanmıştır.

Denilebilir ki - zarafetle parlıyor.

Veri sağlayıcı formda göründükten sonra tüketiciye de ihtiyaç duyulur. Akıllı olmadan, tüm gönderileri sırayla görüntüleyen basit bir kod ekledim.

  1. < asp:Repeater runat ="server" ID ="repPosts" DataSourceID ="dsPosts" >
  2. < HeaderTemplate >
  3. < ItemTemplate >
  4. < div >
  5. < h3 >
  6. < asp:Label ID ="lblHeader" runat ="server" Text ="<%# Eval("Header") %>" >
  7. < p >
  8. < asp:Label ID ="lblText" runat ="server" Text ="<%# Helpers.TypographText(Eval("Text").ToString()) %>" >
* Bu kaynak kodu, Kaynak Kodu İşaretleyici ile vurgulanmıştır.

Ve hikayemin en basit kısmı burada bitiyor. Şimdiye kadar yapılan her şey fare ile tekrar edilebilir. Yeterince kolaydı. Az önce veritabanının nesne yönelimli bir görünümünü oluşturduk ve bu görünümü kullanarak veritabanındaki verileri sayfada görüntülemeye başladık. Aynı zamanda hiçbir zaman tek bir istek yazmadık, doğrudan veri tabanından veri almadık vs...

Ancak veritabanında hiçbir şeyimiz yoksa kullanıcıya ne gösterelim? İyi değil. Veritabanını doldurmak için bir form yazmanız gerekiyor. Şimdi fare programlamayı bırakıp kod yazmaya başlayacağız.

Sistemdeki gönderilerle çalışmak için en temel iki eylemi yaptım - bu ekleme ve silme. Bu koda benzeterek düzenleme yapmak hiç kimse için zor olmayacaktır.

  1. ad alanı DBW
  2. genel sınıf gönderisi
  3. herkese açık Gönderi()
  4. public static void New(String PostText, String PostHeader, Int32 UserId)
  5. p.Header = PostHeader;
  6. p.Text = Helpers.TypographText(PostText);
  7. p.PublishDate = DateTime.Now;
  8. p.User = (m.User'da usr'den, burada usr.Id == UserId, usr'yi seçer).First();
  9. m.AddToPost(p);
  10. m.SaveChanges();
  11. genel statik geçersiz Sil (Int32 PostId)
  12. DataBaseCore.DbModel m = yeni DataBaseCore.DbModel();
  13. DataBaseCore.Post p = yeni DataBaseCore.Post();
  14. p = (m.Post'taki pst'den, burada pst.Id == PostId, pst'yi seçer).First();
  15. m.DeleteObject(p);
  16. m.SaveChanges();
* Bu kaynak kodu, Kaynak Kodu İşaretleyici ile vurgulanmıştır.

Görünüşe göre her şey basit ve evet, öyle. Ama birkaç nüans var.
İlk olarak, LINQ'dur. Onsuz, ADO.NET hiçbir yerde değildir. Bu nedenle, SQL veya LINQ'da büzülmemeli ve genellikle puan almamalısınız, yine de sorgular yazmanız gerekir.
İkincisi, bu kod çerçeve tarafından otomatik olarak oluşturulur, bu nedenle bazı noktalarda fazla kolaylık beklemenize gerek kalmaz ve zaten stüdyo tarafından oluşturulmuş kodu değiştirmeye her zaman hazır olmalısınız. Örneğin, burada 16. satırda, veritabanından seçmem gereken kullanıcı türünden bir nesneyi kullanmak yerine, kullanıcı tanımlayıcısının değerini hemen iletmek daha uygun olacaktır. Bu kod için daha uygun olurdu, ancak evrensel değil. Bu nedenle, kodun iyileştirilmesi ve yeniden düşünülmesi gerekiyor. Belki de sadece bir kullanıcı kimliği değil, kullanıcı türünde bir nesne iletmeniz gerekir.

Sıradaki ne? Ayrıca, ADO.NET Entity Framework'ün vahşi yönlerini araştırarak projeyi yazmaya devam edeceğim ve araştırmamı sizinle paylaşmaktan mutluluk duyacağım sevgili habrausers. Buna göre daha ciddi ve derinlemesine veriler içeren yeni makaleler olacak.

UPD. Konu çok geniş. Burada açıklanan ihtimallerin yüzdesi bile yok ama devamı 8-)

Teknolojiler ADO .NET, . NET Framework, CORBA

ADO .NET uzak veritabanı erişim teknolojisi de istemci-sunucu mimarisi için geliştirilmiştir. Uzak veritabanlarının iki düzeyine ek olarak - istemci ve sunucu - ek düzeyler görünür - uygulamaların iş mantığını uygulayan iş mantığı sunucuları.

ADO .NET teknolojisi, istemcinin veritabanı sunucusuyla çalışması için aşağıdaki şemayı kurar:

Sunucuyla bağlantı kurulması;

Gerekli verilerin elde edilmesi;

Bağlantıyı kapatmak;

Veri işleme;

Değiştirilen verileri sunucuya geri aktarmak için bağlantı kurulması.

ADO .NET iki ana modüle dayanmaktadır:

Veri Sağlayıcı .NET FrameWork

Yerleşik ilişkisel veritabanı (DataSet).

Veri sağlayıcı, adından da anlaşılacağı gibi, uygulamanın veri kaynağı ile iletişiminden ve verilerin işlenmesinden sorumludur. Veri sağlayıcı aşağıdaki veri işleme nesnelerini içerir:

a) Bağlantı, bir veri kaynağına bağlantı kurmak ve işlemleri yönetmek için kullanılır.

b) Komut, kaynak verileri manipüle etmenize ve saklı yordamları yürütmenize olanak tanır. Bu durumda, her iki yönde veri aktarımı için parametreler kullanılabilir.

c) DataAdapter, yerleşik DataSet veritabanı ile veri kaynağı arasında bir bağlantı görevi görür ve hem DataSet'i verilerle doldururken hem de istemci tarafından değiştirilen verileri kaynağa geri gönderirken SQL komutlarını yürütmek için genellikle Command nesnesini kullanır. Bu işlevleri gerçekleştirmek için dört yöntemi vardır: SelectCommand, InsertCommand, UpdateCommand ve DeleteCommand.

d) DataReader, kaynaktan salt okunur veri sağlar. İstemci uygulaması verileri değiştirmiyorsa ve rastgele bir veri seçimi gerektirmiyorsa, ancak tek seferlik bir görünüm yeterliyse, o zaman DataSet yerine DataReader kullanılması bilgisayar kaynaklarından tasarruf sağlar ve uygulama performansını artırır.

Yerleşik ilişkisel veritabanı istemci tarafından alınan ve yerleşik RAM'inde depolanan ilişkisel bir veritabanıdır.

Ayrıca, istemci verileri çevrimdışı olarak işler ve gerekirse bunları değiştirir, ardından sunucuyla bağlantı yeniden kurulur ve yerleşik veritabanından değiştirilen bilgiler geri iletilir.

Böyle bir etkileşim şeması, dosya mimarisinin çalışmasına biraz benzer -

sunucusudur ve genellikle işletmeler tarafından küresel İnternet üzerinden uzak veritabanlarıyla çalışırken kullanılır.

Nesnelere global internet üzerinden erişim sağlamak için, ADO .NET'in bir parçası olarak, HTML ve XML dahil olmak üzere çeşitli veri sunum biçimleri arasında etkileşim sağlayan .NET FrameWork modülü sağlandı.

Bu özelliklerden, ADO .NET teknolojisinin şunları sağladığı görülebilir:

HTML ve XML dahil olmak üzere çeşitli formatlardaki veriler arasında etkileşim kurma yeteneği;

Küresel İnternet üzerinden uzak veritabanlarıyla çalışırken önemli maliyet tasarrufları.

ADO.NET, Bağlantı, Komut ve DataSet nesneleri gibi az sayıda anahtar kavram etrafında dönen katmanlı bir mimari kullanır. Ancak ADO.NET mimarisi, klasik ADO mimarisinden çok farklıdır.

ADO.NET'te Veri Sağlayıcılar

Veri sağlayıcı belirli bir veritabanına erişmenize, SQL komutlarını yürütmenize ve verileri almanıza izin veren bir dizi ADO.NET sınıfıdır. Temel olarak, bir veri sağlayıcı, uygulamanız ile bir veri kaynağı arasında bir köprüdür.

İlk yaklaşım olarak, bir veri sağlayıcı, belirli bir veri kaynağıyla etkileşim kurmak üzere tasarlanmış belirli bir ad alanında tanımlanan bir türler kümesi olarak düşünülebilir. Ancak, kullanılan veri sağlayıcıdan bağımsız olarak, her biri temel işlevselliği sağlayan bir dizi sınıf tanımlar. Aşağıdaki tabloda bazı yaygın temel nesneler, bunların temel sınıfları (System.Data.Common ad alanında tanımlanmıştır) ve uyguladıkları ana arabirimler (System.Data ad alanında tanımlanmıştır) listelenmektedir:

Temel ADO.NET Veri Sağlayıcı Nesneleri
Nesne türü temel sınıf İlgili arayüzler Amaç
bağ Db Bağlantısı IDb Bağlantısı Veri deposuna bağlanmanızı ve bağlantınızı kesmenizi sağlar. Ayrıca bağlantı nesneleri, ilgili işlem nesnelerine erişim sağlar.
emretmek DbKomutu IDbKomutu Bir SQL sorgusunu veya saklı yordamı temsil eder. Ayrıca komut nesneleri, belirli bir veri sağlayıcının veri okuyucu nesnesine erişim sağlar.
veri okuyucu DbDataOkuyucu IDataReader, IDataRecord Sunucu tarafı imleci kullanarak ileri yönde salt okunur veri erişimi sağlar
Veri Adaptörü DbDataAdapter IDataAdapter, IDbDataAdapter Veri kümelerini veri deposundan arama işlemine aktarır ve bunun tersi de geçerlidir. Veri bağdaştırıcıları, veri deposundaki bilgileri almak, eklemek, değiştirmek ve silmek için bir bağlantı ve bir dizi dört dahili komut nesnesi içerir.
Parametre DbParametre IDataParameter, IDbDataParameter Parametreli bir sorguda adlandırılmış bir parametreyi temsil eder
işlem Dbİşlem IDbİşlem Veritabanındaki bir işlemi kapsüller

Bu temel sınıfların özel adları sağlayıcılar arasında farklılık gösterir (örneğin, SqlConnection, OracleConnection, OdbcConnection ve MySqlConnection), ancak bu nesnelerin tümü, aynı arabirimleri (IDbConnection gibi) uygulayan aynı temel sınıftan (bağlantı nesneleri durumunda, DbConnection) türetilir. . Bu nedenle, bir veri sağlayıcıyla nasıl çalışacağınızı öğrenirseniz, gerisini kolayca halledebilirsiniz.

ADO.NET'te "bağlantı nesnesi" terimi aslında DbConnection'dan türetilen somut bir türe atıfta bulunur; "hiç" bir bağlantı nesnesi yoktur. Aynı şey "komut nesnesi", "veri bağdaştırıcı nesnesi" vb. için de söylenebilir. Kural olarak, belirli bir veri sağlayıcısındaki nesne adlarına uygun VTYS (örn. SqlConnection, OracleConnection, SqlDataReader, vb.) eklenir.

ADO.NET sağlayıcı modelinin arkasındaki temel fikirlerden biri genişletilebilirliktir. Başka bir deyişle, geliştiriciler tescilli veri kaynakları için kendi sağlayıcılarını oluşturabilir. Aslında, dosya sistemi veya dizin hizmeti gibi ilişkisel olmayan veri depolarını saran özel ADO.NET sağlayıcılarının nasıl oluşturulacağını gösteren birçok örnek mevcuttur. Bazı üçüncü taraflar kendi .NET veri sağlayıcılarını da satarlar.

.NET Framework, dört sağlayıcıdan oluşan küçük bir setle birlikte gelir:

SQL Server

SQL Server veritabanlarına (sürüm 7.0 ve üstü) optimize edilmiş erişim sağlar.

OLEDB

OLE DB sürücüsüne sahip herhangi bir veri kaynağına erişim sağlar. Bu, 7.0 öncesi SQL Server veritabanlarını içerir.

kehanet

Oracle veritabanlarına optimize edilmiş erişim sağlar (sürüm 8i ve üstü).

ODBC

ODBC sürücüsü olan herhangi bir veri kaynağına erişim sağlar.

.NET 4'te Oracle sağlayıcısı kullanımdan kaldırılmıştır. Hala çalışıyor olsa da Microsoft, Oracle veritabanlarına erişmek için http://www.oracle.com adresinde bulunan Oracle'ın ODP.NET (.NET için Oracle Veri Sağlayıcısı) gibi bir üçüncü taraf sağlayıcı kullanılmasını önerir. Bu sağlayıcı, LOB'ler, zaman damgaları ve XML verileri gibi özel Oracle veri türleri ve ayrıca birkaç ek özellik için kapsamlı destek sağlar.

Aşağıdaki şekil, ADO.NET sağlayıcı modelinin düzeylerini göstermektedir:

Bir sağlayıcı seçerken, önce veri kaynağınızı hedefleyen yerleşik .NET sağlayıcısını bulmaya çalışın. Bulunamazsa, veri kaynağı için bir OLE DB sürücünüz varsa OLE DB'yi kullanabilirsiniz.

OLE DB teknolojisi, ADO'nun bir parçası olarak uzun yıllardır kullanılmaktadır, bu nedenle çoğu veri kaynağının OLE DB sürücüleri vardır (SQL Server, Oracle, Access, MySQL ve daha fazlası dahil). Özel bir .NET sağlayıcısı veya OLE DB sürücüsü bulamadığınız bu ender durumlarda, bir ODBC sürücüsüyle birlikte çalışan bir ODBC sağlayıcısına bakabilirsiniz.

ADO.NET'te Standardizasyon

İlk bakışta ADO.NET, birçok veritabanı türüyle çalışacak genel bir nesne kümesi içermediğinden parçalı bir model sunuyor gibi görünebilir. Sonuç olarak, bir ilişkisel VTYS'den diğerine geçtiğinizde, farklı bir sınıf kümesi kullanmak için veri erişim kodunu değiştirmeniz gerekir.

Ancak farklı .NET veri sağlayıcıları farklı sınıflar kullansa da, hepsi bir şekilde standartlaştırılmıştır. Daha kesin olarak, her sağlayıcı aynı arabirimler ve temel sınıflar kümesini temel alır. Örneğin, Connection nesnesi, Open() ve Close() gibi anahtar yöntemleri tanımlayan IDbConnection arabirimini uygular. Bu standardizasyon, her Connection sınıfının aynı şekilde çalışmasını ve aynı anahtar özellikler ve yöntemler kümesini sağlamasını sağlar.

Perde arkasında, farklı satıcılar tamamen farklı düşük seviyeli çağrılar ve API'ler kullanır. Örneğin, SQL Server Veri Sağlayıcısı özel bir protokol kullanır TDS (Tabular Data Stream - tablo veri akışı) sunucuyla etkileşime geçmek için. Bu modelin avantajları hemen belli değil, ancak çok önemli:

    Her sağlayıcı aynı arabirimleri ve temel sınıfları kullandığından, sağlayıcı sınıfları yerine arabirimlerle çalışarak (biraz fazladan çalışma ile) genel veri erişim kodu yazabilirsiniz.

    Her sağlayıcı ayrı olarak uygulandığından, uygun optimizasyonları kullanabilir (bu, her bir veritabanı çağrısının temeldeki veritabanı sürücüsüne ulaşmadan önce ortak bir katmandan geçmesi gereken ADO modelinden farklıdır). Ek olarak, özel satıcılar, diğer satıcıların sahip olmadığı standart olmayan özellikleri (SQL Sever'ın XML sorgularını yürütme yeteneği gibi) ekleyebilir.

ADO.NET ayrıca başka bir standardizasyon düzeyine sahiptir - veri seti. DataSet sınıfı, bir veya daha fazla veri kaynağı tablosundan alınan genel amaçlı bir veri kapsayıcıdır. DataSet tamamen geneldir; başka bir deyişle, özel sağlayıcılar DataSet sınıfının kendi özel sürümlerini tanımlamaz.

Hangi veri sağlayıcıyı kullanırsanız kullanın, verileri alabilir ve aynı şekilde tam kapsamlı bir Veri Kümesine koyabilirsiniz. Bu, verileri alan kodu, onu işleyen koddan ayırmayı kolaylaştırır. Temel veritabanı değişirse, yalnızca verileri alan kodun değişmesi gerekir, ancak bir DataSet kullanılıyorsa ve bilgi aynı yapıya sahipse, işlenme şeklini değiştirmeye gerek yoktur.

ADO.NET Temel Sınıfları

ADO.NET sınıfları birkaç ad alanında gruplandırılmıştır. Her sağlayıcının kendi ad alanı vardır ve DataSet gibi genel sınıflar System.Data ad alanındadır. Temel ADO.NET desteği için en önemli ad alanları aşağıda açıklanmıştır:

Sistem verisi

Sütunları, ilişkileri, tabloları, veri kümelerini, satırları, görünümleri ve kısıtlamaları modelleyen anahtar veri kapsayıcı sınıflarını içerir. Ayrıca, bağlantı tabanlı veri nesneleri tarafından uygulanan anahtar arabirimleri içerir.

Sistem.Veri.Ortak

System.Data'dan bazı arabirimleri uygulayan ve ADO.NET'in temel işlevlerini tanımlayan temel, çoğu soyut sınıfları içerir. Veri sağlayıcılar, kendi özel sürümlerini oluşturarak bu sınıflardan (DbConnection, DbCommand, vb.) devralır.

System.Data.OleDb

OleDbCommand, OleDbConnection ve OleDbDataAdapter dahil olmak üzere bir OLE DB sağlayıcısına bağlanmak için kullanılan sınıfları içerir. Bu sınıflar çoğu OLE DB sağlayıcısını destekler, ancak sürüm 2.5 OLE DB arabirimlerini gerektirenleri desteklemez.

System.Data.SqlClient

SqlDbCommand, SqlDbConnection ve SqlDbDataAdapter dahil olmak üzere bir Microsoft SQL Server veritabanına bağlanmak için kullanılan sınıfları içerir. Bu sınıflar, SQL Server'a TDS arayüzünü kullanmak için optimize edilmiştir.

System.Data.OracleClient

OracleCommand, OracleConnection ve OracleDataAdapter dahil olmak üzere bir Oracle veritabanına (sürüm 8.1.7 ve üstü) bağlanmak için gereken sınıfları içerir. Bu sınıflar optimize edilmiş bir arayüz kullanır OCI (Oracle Çağrı Arayüzü - Oracle Çağrı Arayüzü)

Sistem.Veri.Odbc

OdbcCommand, OdbcConnection, OdbcDataReader ve OdbcDataAdapter gibi çoğu ODBC sürücüsüne bağlanmak için gereken sınıfları içerir. ODBC sürücüleri her tür veri kaynağı için sağlanır ve Denetim Masası'ndaki Veri Kaynakları simgesi aracılığıyla yapılandırılır.

System.Data.SqlTypes

Yerleşik SQL Server veri türlerine karşılık gelen yapıları içerir. Bu sınıflar gerekli değildir, ancak otomatik dönüştürme gerektiren standart .NET veri türlerini kullanmaya bir alternatif sağlar.