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
Programdeklaraci 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í
CustomerIDaCityvlastnostem třídy entity jako představující sloupce v tabulce databáze.Označíte vlastnost
CustomerIDjako sloupec primárního klíče v databázi.Určíte
_CustomerIDa_Citypole 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
Customerv 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.mdfse 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
Mainmetody 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
Mainmetody 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, prohlédněte si část Řešení potíží v části Učení podle návodů.
Výsledky dotazu v okně konzoly by se měly zobrazit takto:
ID=AROUT, City=LondonID=BSBEV, City=LondonID=CONSH, City=LondonID=EASTC, City=LondonID=NORTS, City=LondonID=SEVES, City=LondonStisknutí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.