Algoritmy a programování IV

Týden 9

Možnosti použití LINQ to SQL

LINQ to SQL podporuje všechny klíčové funkce, které byste jako vývojáři SQL očekávali. Můžete se dotazovat na informace a vkládat, aktualizovat a odstraňovat informace z tabulek.

Výběr

Výběr (projekce) se provádí tak, že jednoduše napíšete dotaz LINQ ve vlastním programovacím jazyce a pak ho spustíte, aby se načetly výsledky. LINQ to SQL sama překládá všechny potřebné operace do potřebných operací SQL, které znáte. Další informace najdete v tématu LINQ to SQL.

V následujícím příkladu se načtou názvy společností zákazníků z Londýna a zobrazí se v okně konzoly.


// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");var companyNameQuery =
    from cust in nw.Customers
    where cust.City == "London"
    select cust.CompanyName;foreach (var customer in companyNameQuery)
{
    Console.WriteLine(customer);
}

Vložení

Pokud chcete spustit SQL Insert, stačí přidat objekty do objektového modelu, který jste vytvořili, a volat SubmitChanges na DataContext.

V následujícím příkladu se do Customers tabulky přidá nový zákazník a informace o zákazníkovi pomocí InsertOnSubmitpříkazu .


// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");Customer cust = new Customer();
cust.CompanyName = "SomeCompany";
cust.City = "London";
cust.CustomerID = "98128";
cust.PostalCode = "55555";
cust.Phone = "555-555-5555";
nw.Customers.InsertOnSubmit(cust);// At this point, the new Customer object is added in the object model.
// In LINQ to SQL, the change is not sent to the database until
// SubmitChanges is called.
nw.SubmitChanges();

Aktualizace

Do Update položky databáze nejprve načtěte položku a upravte ji přímo v objektovém modelu. Po úpravě objektu proveďte aktualizaci databáze voláním SubmitChangesDataContext příkazu .

V následujícím příkladu se načtou všichni zákazníci z Londýna. Pak se název města změní z "Londýn" na "Londýn - metro". Nakonec se zavolá, SubmitChanges aby se změny odeslaly do databáze.


Northwnd nw = new Northwnd(@"northwnd.mdf");var cityNameQuery =
    from cust in nw.Customers
    where cust.City.Contains("London")
    select cust;foreach (var customer in cityNameQuery)
{
    if (customer.City == "London")
    {
        customer.City = "London - Metro";
    }
}
nw.SubmitChanges();

odstraňování

Delete položce odeberte položku z kolekce, do které patří, a pak voláním na SubmitChangesDataContext položku potvrďte změnu.

si téma Postupy: Odstranění řádků z databáze.

V následujícím příkladu se z databáze načte zákazník, který ho 98128 máCustomerID. Po potvrzení, že byl načten řádek zákazníka, DeleteOnSubmit je volána, aby se tento objekt odebral z kolekce. SubmitChanges Nakonec je volána k předání odstranění do databáze.


 0)
{
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
    nw.SubmitChanges();
}
" style="box-sizing: inherit; outline-color: inherit; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 1em; direction: ltr; border: 0px; padding: 0px; line-height: 1.3571; display: block; position: relative;">Northwnd nw = new Northwnd(@"northwnd.mdf");
var deleteIndivCust =
    from cust in nw.Customers
    where cust.CustomerID == "98128"
    select cust;if (deleteIndivCust.Count() > 0)
{
    nw.Customers.DeleteOnSubmit(deleteIndivCust.First());
    nw.SubmitChanges();
}