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 (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);
}
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();
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();
K Delete
položce odeberte položku z kolekce, do které patří, a pak voláním na SubmitChangesDataContext položku potvrďte změnu.
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();
}