**Knižnica ADO.NET** (**A**ctiveX **D**ata **O**bjects for **.NET**) je súbor softvérových komponentov (tried, rozhraní atď.) platformy .NET, ktorej je nedeliteľnou súčasťou. ADO.NET sa používa na čítanie a modifikáciu dát uložených v relačnách databázach, ako aj v nerelačných dátových zdrojoch. Knižnica je, vzhľadom na podobnosť názvov, považovaná za evolučný krok staršej technológie ADO, no objektový model je značne odlišný, takže je považovaná za nový produkt.

Architektúra
------------

Konceptuálne je knižnica ADO.NET rozdelená na poskytovateľov a konzumentov dát, pričom za konzumenta sú považované aplikácie, ktoré potrebujú dáta a poskytovatelia predstavujú triedy, ktoré poskytujú dáta konzumentom. Na rozdiel od ADO, ADO.NET rozdeľuje poskytovateľov podľa typu databázy. V štandardnej knižnici sa nachádzajú poskytovatelia pre SQL Server (menný priestor *System.Data.SQLClient*), OLEDB (*System.Data.OleDb*) a ODBC (*System.Data.Odbc*), iní výrobcovia (napr. pre databázové systémy Oracle, MySQL, PostgreSQL) môžu dodávať vlastných poskytovateľov.

Samotné čítanie dát majú na starosti triedy typu odvodené od rozhrania *IDataReader*, ktoré slúžia len na rýchle čítanie dát, alebo triedy odvodené od rozhrania *IDataAdapter*, ktoré vytvárajú objekty typu *DataSet*, v ktorých je možné ukladať v pamäti rozsiahlejšie dátové štruktúry vo forme tabuliek (objekty typu DataTable) ako aj ich ich vzťahov (objekty typu DataRelation) a obmedzení (objekty typu Constraint).

### LINQ

*Bližšie informácie v hlavnom článku: Language Integrated Query*
V roku 2007 bola s verziou .NET 3.5 vydaná komponenta LINQ (**L**anguage **In**tegrated **Q**uery), ktorá predstavila jednotný programový model na prácu s dátami (ich filtrovanie, projekciu, enumeráciu atď.) s implementáciou prístupu pre objekty (LINQ to Objects), ADO.NET (LINQ to SQL, LINQ to DataSets) a XML (LINQ to XML), neskôr pribudla implementácia pre Entity Framework (LINQ to Entities). LINQ predstavuje rozšírenie jazykov C# a Visual Basic.NET o dopytovaciu syntax podobnú dopytom v jazyku SQL, lambda výrazy, implicitné typovanie premenných, anonymné typy a inicializátory objektov.

```
int hodnota = 5; 

var vysledky = from c in Kolekcia
 where c.Vlastnost < hodnota
 select new {c.Vlastnost, c.InaVlasntost};

foreach (var vysledok in vysledky)
{
 Console.WriteLine(vysledok);
}

```

Jednoduchý príklad dopytu napísaného v syntaxi LINQ, ktorý prechádza filtruje kolekciu `Kolekcia`, a vyberá z nej le tie prvky, ktorých vlastnosť je menšia ako hodnota premennej.

LINQ to SQL je implementácia prístupu pre Microsoft SQL Server, kde je dopyt napísaný v syntaxi LINQ prevedený do jazyka T-SQL, ktorý je spracovaný databázovým strojom SQL Servera a výsledok dopytu je zaslaný naspäť. Nutnosťou takéhoto spracovania dopytu je vytvorenie mapovania medzi relačnými dátami uloženými na strane servera a dátovými štruktúrami na strane klienta (aplikácie), na čo sa využívajú atribúty tried.

```
[Table(Name="Customers")]
public class Customer
{
 [Column(IsPrimaryKey = true)]
 public int CustID;

 [Column]
 public string CustName;
}

```

Príklad predstavuje triedu `Customer` s dvoma vlastnosťami `CustID` a `CustName`, ktorá mapuje tabuľku `Customers` uloženú na SQL Serveri na základe uvedených atribútov `Table` a `Column`.