Sdílet prostřednictvím


Návod: Jednoduchý objektový model a dotaz (C#)

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

  1. V nabídce Soubor sady Visual Studio přejděte na příkaz Nový a klepněte na tlačítko Projekt.

  2. V podokně Typy projektů v dialogovém okně Nový projekt klikněte na Visual C#.

  3. V podokně Šablony klikněte na Konzolová aplikace.

  4. Do pole Název zadejte LinqConsoleApp.

  5. V poli Umístění ověřte, kam chcete ukládat soubory projektu.

  6. 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

  1. V Průzkumník řešení klikněte pravým tlačítkem na Odkazy a potom klikněte na Přidat odkaz.

  2. 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.

  3. 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 a City 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 za Table<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

  1. 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();
    
  2. 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

  3. 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.

Viz také