Teprve nedávno vyšel .NET Framework 3.0, zajímá vás co bude dál? Jak bude vypadat jeho nástupce - .NET Framework 3.5 a co přinese nového?
Představení technologie LINQ a ruzných rozšírení jako jsou Plinq, LINQ to XSD, LINQ to Amazon, Blinq a dalších...
reklama
- úvod
- LINQ to SQL
- Další implementace LINQ
- PLinq
- LINQ to XSD
- LINQ to Amazon
- Blinq
- další...
Neznáte LINQ?LINQ je dotazovací jazyk integrovaný přímo v C# nebo VB.NET. LINQ je součástí .NET Framework 3.5 na jehož finální verzi si ještě nějakou dobu počkáme, tzn. k dispozici zatím máme pouze CTP (něco jako beta).
Co umí LINQ?
LINQ - dotazování v kolekcích, polích a pod.
LINQ to XML - dotazování do XML (dříve XLinq)
LINQ to SQL - dotazování do databáze (dříve DLinq)
LINQ to SQL
... je nejzajímavější a nejspíš i nejpoužívanější, dovoluje nám provádět jednoduše a hlavně objektově dotazy nad relační databází.
Select
DbShop db = new DbShop("Data Source=(local);Initial Catalog=eShop");
var results = from p in db.Products
where p.Description.Contains("kvalitní") && p.Price < 600
orderby p.Price
select p;
foreach (var item in results)
{
Console.WriteLine(string.Format("item: {0}, price: {1}", item.Name, item.Price));
}
Insert Products product = new Products();
product.Name = "LINQ in Action";
product.Description = "Kniha o nové technologii LINQ";
product.Price = 499;
db.Products.Add(product);
db.SubmitChanges();
Update var item = (from p in db.Products
where p.ID = 10
orderby p.Price
select p).First();
item.Price = 6500;
item.Discount = true;
db.SubmitChanges();
Třídy
DbShop (práce s databází) a
Products (tabulka Products), které se zde používají jsou velice důležité a objektově popisují schéma databáze, nad kterou se pracuje. Jsou zde implementovány metody, vlastnosti nebo třeba relace mezi tabulkami což umožňuje přeložení LINQ dotazů do podoby SQL dotazů nebo práci se samotnou databází. Tyto třídy popisující schéma je možné buď psát ručně (celkem pracné) a nebo použít
SqlMetal.exe, který je součástí instalace LINQu a který vygeneruje potřebné třídy automaticky podle databáze.
Ukázka automatického překladu LINQ dotazu na SQL
Odkazy
Stáhnout LINQ pro Visual Studio 2005
http://www.microsoft.com/downloads/details.aspx?FamilyID=1e902c21-340c-4d13-9f04-70eb5e3dceea&DisplayLang=en ^Server o LINQu
http://linqinaction.net ^
101 jednoduchých ukázek použití základních operací LINQu
http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx ^Podrobný dokument o LINQ to SQL
http://msdn2.microsoft.com/en-us/library/bb425822.aspx ^Podrobný dokument o LINQ to XML
http://msdn2.microsoft.com/en-us/library/bb308960.aspx ^ LINQ to cokoliv?
LINQ umožňuje víc - můžeme vytvářet vlastní implementace založené na tomto dotazovacím jazyce. Již dnes exitují některé rozšíření LINQu...
PLinq - Parallel Linq
Interní projekt Microsoftu PLinq je technologie zaměřená na vývoj aplikací bežících na několika procesorech - pouze definujeme
co se má počítat, o paralelní výpočet se už postará PLinq. Více na
http://www.bluebytesoftware.com/blog/PermaLink,guid,81ca9c00-b43e-4860-b96b-4fd2bd735c9f.aspx ^ LINQ to XSD
Další interní projekt Microsoftu je Linq to XSD. Problém samotného XML je že se jedná o generický zápis dat, nevíme jakého typu jsou data v daném XML uloženy nebo jaká je struktura, proto LINQ to
XML (nezaměňujte s LINQ to
XSD) vypadá takto:
var results = from item in purchaseOrder.Elements("Item")
where (double)item.Element("Price") < 600
select new {
(double)item.Element("Price"), (int)item.Element("Quantity") };
Nedochází zde ke kontrole datového typu hodnot a ani intellisense nefunguje, protože nezná strukturu dat.
Řešením je Linq to XSDXSD je shcéma XML souboru popisující strukturu a typ uložených dat.
var results = from item in purchaseOrder.Elements("Item")
where item.Element("Price") < 600
select new { item.Element("Price"), item.Element("Quantity") };
Rozdíl je tedy nejen v syntax, ale také intellisense zde funguje, protože podle XSD zná strukturu dokumentu a datové typy.
Další informace o LINQ to XSD
http://blogs.msdn.com/xmlteam/archive/2006/11/27/typed-xml-programmer-welcome-to-linq.aspx ^ Stáhnout LINQ to XSD
http://www.microsoft.com/downloads/details.aspx?FamilyID=6979e1eb-4a05-4ac6-ac9d-b3e138d33633&displaylang=en ^ LINQ to Amazon
Zajímavou ukázkou může být propojení LINQu na internetový obchod Amazon.
var query =
from book in new Amazon.BookSearch()
where
book.Title.Contains("ajax") &&
(book.Publisher == "Manning") &&
(book.Price <= 25) &&
(book.Condition == BookCondition.New)
select book;
http://weblogs.asp.net/fmarguerie/archive/2006/06/26/Introducing-Linq-to-Amazon.aspx BLinq
BLinq je projekt maličko vybočující z řady výše uvedených. Generuje ASP.NET stránky pro manipulaci s daty a tabulkami databáze. Umožní přes webové stránky nejen prohlížet data v tabulkách, ale také přidávat, mazat nebo měnit záznamy. Pokud znáte například MyPhpAdmin, Blinq je obdobný projekt založený na LINQu.
http://www.asp.net/sandbox/app_blinq.aspx?tabid=62 ^ Další projekty