Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento průvodce poskytuje základní scénář LINQ to SQL od začátku do konce s minimálními složitostmi. Vytvoříte třídu entity, která modeluje tabulku Customers v ukázkové databázi Northwind. Pak vytvoříte jednoduchý dotaz, který zobrazí seznam zákazníků, kteří se nacházejí v Londýně.
Tento návod je zaměřený na práci s kódem, aby pomohl ukázat LINQ to SQL koncepty. Normálně byste k vytvoření objektového modelu použili návrhář relačního objektu.
Poznámka:
Počítač může v následujících pokynech zobrazit různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Edice sady Visual Studio, kterou máte, a nastavení, která používáte, určují tyto prvky. Další informace najdete v tématu Přizpůsobeníintegrovaného vývojového prostředí (IDE).
Tento názorný postup byl napsán pomocí vývojového nastavení jazyka Visual C#.
Požadavky
Tento názorný postup používá k uložení souborů vyhrazenou složku (c:\linqtest5). Vytvořte tuto složku před zahájením návodu.
Tento názorný postup vyžaduje ukázkovou databázi Northwind. Pokud tuto databázi nemáte na vývojovém počítači, můžete ji stáhnout z webu pro stažení microsoftu. Pokyny najdete v tématu Stažení ukázkových databází. Po stažení databáze zkopírujte soubor do složky c:\linqtest5.
Přehled
Tento názorný postup se skládá ze šesti hlavních úloh:
Vytvoření řešení LINQ to SQL v sadě Visual Studio
Mapování třídy na tabulku databáze
Navrhování vlastností ve třídě tak, aby představovaly sloupce databáze.
Určuje připojení k databázi Northwind.
Vytvoření jednoduchého dotazu pro provedení v databázi
Provedení dotazu a sledování výsledků
Vytvoření řešení LINQ to SQL
V tomto prvním úkolu vytvoříte řešení sady Visual Studio, které obsahuje potřebné odkazy na sestavení a spuštění projektu LINQ to SQL.
Vytvoření řešení LINQ to SQL
V nabídce Soubor sady Visual Studio přejděte na příkaz Nový a klepněte na tlačítko Projekt.
V podokně Typy projektů v dialogovém okně Nový projekt klikněte na Visual C#.
V podokně Šablony klikněte na Konzolová aplikace.
Do pole Název zadejte LinqConsoleApp.
V poli Umístění ověřte, kam chcete ukládat soubory projektu.
Klikněte na OK.
Přidání odkazů a direktiv LINQ
Tento průvodce používá sestavení, která nemusí být nainstalována ve vašem projektu ve výchozím nastavení. Pokud system.Data.Linq není v projektu uvedený jako odkaz (rozbalte uzel Reference v Průzkumníku řešení), přidejte ho, jak je vysvětleno v následujících krocích.
Jak přidat System.Data.Linq
V Průzkumník řešení klikněte pravým tlačítkem na Odkazy a potom klikněte na Přidat odkaz.
V dialogovém okně Přidat odkaz klikněte na .NET, vyberte sestavení System.Data.Linq a poté klikněte na OK.
Sestavení se přidá do projektu.
Na začátek Program.cs přidejte následující direktivy:
using System.Data.Linq; using System.Data.Linq.Mapping;
Mapování třídy na tabulku databáze
V tomto kroku vytvoříte třídu a namapujete ji na tabulku databáze. Taková třída je označena jako třída entity. Všimněte si, že mapování se provádí pouhým přidáním atributu TableAttribute . Vlastnost Name určuje název tabulky v databázi.
Vytvoření třídy entity a jeho mapování na tabulku databáze
Do Program.cs bezprostředně nad
Program
deklaraci třídy zadejte nebo vložte následující kód:[Table(Name = "Customers")] public class Customer { }
Navrhování vlastností ve třídě pro reprezentaci databázových sloupců
V tomto kroku provedete několik úkolů.
Atribut použijete ColumnAttribute k určení
CustomerID
aCity
vlastnostem třídy entity jako představující sloupce v tabulce databáze.Označíte vlastnost
CustomerID
jako sloupec primárního klíče v databázi.Určíte
_CustomerID
a_City
pole pro privátní úložiště. LINQ to SQL pak může ukládat a načítat hodnoty přímo místo použití veřejných přístupových objektů, které můžou zahrnovat obchodní logiku.
Znázornění charakteristik dvou sloupců databáze
Zadejte nebo vložte následující kód do složených závorek třídy
Customer
v souboru Program.cs.private string _CustomerID; [Column(IsPrimaryKey=true, Storage="_CustomerID")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } private string _City; [Column(Storage="_City")] public string City { get { return this._City; } set { this._City=value; } }
Určení připojení k databázi Northwind
V tomto kroku pomocí objektu DataContext vytvoříte propojení mezi strukturami dat založenými na kódu a samotnou databází. Jedná se DataContext o hlavní kanál, prostřednictvím kterého načtete objekty z databáze a odešlete změny.
Deklarujete také Table<Customer>
, aby sloužila jako logická tabulka typu pro vaše dotazy na tabulku Customers v databázi. Tyto dotazy vytvoříte a spustíte v dalších krocích.
Určení připojení k databázi
Do metody zadejte nebo vložte následující kód
Main
.Všimněte si, že soubor
northwnd.mdf
se předpokládá být ve složce linqtest5. Další informace najdete v části Požadavky uvedené výše v tomto názorném postupu.// Use a connection string. DataContext db = new DataContext (@"c:\linqtest5\northwnd.mdf"); // Get a typed table to run queries. Table<Customer> Customers = db.GetTable<Customer>();
Vytvoření jednoduchého dotazu
V tomto kroku vytvoříte dotaz, který vyhledá zákazníky v tabulce Zákazníci databáze v Londýně. Kód dotazu v tomto kroku pouze popisuje dotaz. Nespustí ho. Tento přístup se označuje jako odložené spuštění. Další informace najdete v tématu Úvod k dotazům LINQ (C#).
Vytvoříte také výstup protokolu, který zobrazí příkazy SQL, které LINQ to SQL generuje. Tato funkce protokolování (která používá Log) je užitečná při ladění a při určování, že příkazy odesílané do databáze přesně představují váš dotaz.
Vytvoření jednoduchého dotazu
Zadejte nebo vložte následující kód do
Main
metody zaTable<Customer>
deklaraci.// Attach the log to show generated SQL. db.Log = Console.Out; // Query for customers in London. IQueryable<Customer> custQuery = from cust in Customers where cust.City == "London" select cust;
Spuštění dotazu
V tomto kroku dotaz skutečně spustíte. Výrazy dotazu, které jste vytvořili v předchozích krocích, se nevyhodnocují, dokud nebudou potřebné výsledky. Při zahájení foreach
iterace se provede příkaz SQL pro databázi a objekty jsou materializovány.
Pro spuštění dotazu
Na konec
Main
metody zadejte nebo vložte následující kód (za popis dotazu).foreach (Customer cust in custQuery) { Console.WriteLine("ID={0}, City={1}", cust.CustomerID, cust.City); } // Prevent console window from closing. Console.ReadLine();
Stiskněte F5 pro ladění aplikace.
Poznámka:
Pokud vaše aplikace vygeneruje chybu za běhu, přečtěte si část Řešení potíží s výukou podle návodů.
Výsledky dotazu v okně konzoly by se měly zobrazit takto:
ID=AROUT, City=London
ID=BSBEV, City=London
ID=CONSH, City=London
ID=EASTC, City=London
ID=NORTS, City=London
ID=SEVES, City=London
Stisknutím klávesy Enter v okně konzoly aplikaci zavřete.
Další kroky
Návod: Dotazování napříč relacemi (C#) pokračuje tam, kde tento návod končí. Návod k dotazování napříč relacemi ukazuje, jak může LINQ to SQL dotazovat napříč tabulkami, podobně jako spojení v relační databázi.
Pokud chcete provést průvodce dotazováním napříč relacemi, ujistěte se, že uložíte řešení pro průvodce, který jste právě dokončili, protože je to nezbytný předpoklad.