PLATFORMY TECHNOLOGICZNE LINQ mgr inż. Tomasz Gawron.

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

G.Broda Helsinki 20-22, September 2010
Java Data Objects.
Projekt Do kariery na skrzydłach – studiuj Aviation Management Projekt współfinansowany ze ś rodków Europejskiego Funduszu Społecznego. Biuro projektu:
Introduction to SystemC
Usługi sieciowe Wykład 9 VPN
Równoległe kwerendy danych
Java Server Faces Tomasz Nowak.
ALLEGRO PIERWSZA GRA: WYŚCIG
C++ w Objectivity Marcin Michalak s1744. Pomocne pakiety: Data Definition Language (DDL). Standard Template Library (STL). Active Schema.
Wybrane elementy C#, BCL
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Visual Studio Codename „Orcas”, LINQ
Java vs C# Michał Prządka Tomasz Nowak
OOPC++ - operatory1 Operatory class complex { private: double re, im; public: complex (double r, double i = 0) { re = r; im = i; } friend complex operator+
KONKURS WIEDZY O SZTUCE
GUI Struktury Spotkanie integracyjne Nazwa wydziału: EAIiE Nazwa katedry: Informatyka Miejsce i data prezentacji: Kraków,
ADO.NET · tworzenie i przetwarzanie lokalnych relacyjnych baz danych
Dzielenie relacyjne / Relational Division
Ministerstwo Gospodarki Poland'sexperience Waldemar Pawlak Deputy Prime Minister, Minister of Economy March 2010.
Testowanie oprogramowania metodą badania pokrycia kodu
LINQ - Language Integrated Query Unifikacja dostępu do danych Uproszczone odpytywanie obiektów, daych i XML poprzez integrację zapytań z językiem programownia.
Łukasz Monkiewicz.
Współprogramy Plan: Motywacja Składnia Scenariusz obiektu współprogramu Przykłady Producent – konsument ( instrukcja attach ) Czytelnik -pisarze ( instukcja.
Aplikacje sieciowe Obiekty typu Socket. ServerSocket ClientSocket Socket ClientSocket Socket.
Warstwy aplikacji sieciowych
„Tworzenie aplikacji sieciowych w języku Java”
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Exceptions Prezentacja.
MS SQL SERVER udział w rynku. Source: Gartner Dataquest (May 2006) Company Market Share (%) Market Share (%) Growth (%) Oracle6, ,
Język C# Copyright, 2004 © Adam Czajka.
MS ASP.NET 2005/2006
Przestrzeń System podstawowe klasy i klasy bazowe.
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
Rozproszone transakcje z wykorzystaniem usługi Service Broker w SQL Server 2008 R2 Andrzej Ptasznik.
Porysujmy trochę czyli Łączenie SQLa, AutoCADa i Delphi
LINQ (Language-INtegrated Query) Marcin Bohdziewicz s4070.
Algorytmy i struktury danych
Dr inż. Piotr Czapiewski. Overloading Znaczenie inne niż w większości języków obiektowych Metoda dynamicznego tworzenia pól i metod Magiczne metody.
Krzysztof Manuszewski
REGIONALNE CENTRUM INFORMACJI I WSPOMAGANIA ORGANIZACJI POZARZĄDOWYCH REGIONAL INFORMATION and SUPPORT CENTER for NGOs EVALUATION V BALTIC SEA NGO FORUM.
Click to show the screen.
db4o Kacper Skory Marcin Talarek
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
Tablice.
Wacław Sierpiński.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Warsztaty C# Część 2 Grzegorz Piotrowski Grupa.NET PO
Warsztaty C# Część 3 Grzegorz Piotrowski Grupa.NET PO
1 Strategia dziel i zwyciężaj Wiele ważnych algorytmów ma strukturą rekurencyjną. W celu rozwiązania rozwiązania problemu algorytm wywołuje sam siebie.
Bazy danych.
A. Jędryczkowski – 2006 ©. Tablica to struktura danych zawierająca zbiór obiektów tego samego typu i odpowiada matematycznemu pojęciu wektora (tablica.
Pliki elementowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików elementowych. Pliki takie zawierają informację zakodowaną
W.K. (c) Bazy danych Access. 2W.K. (c) 2007 Baza danych - definicje Baza danych to zbiór informacji dotyczących określonego tematu (stanowiących.
Temat 1: Pojęcie bazy danych – podstawowe definicje
WoF PLATFORMA KOMUNIKACJI. WoF jest platformą komunikacji systemem wspomagającym obieg informacji oraz zarządzanie w firmie Zapewnia elektroniczny obieg.
Warsztaty użytkowników programu PLANS – Karwia06 Język makropoleceń JMP programu PLANS Część I mgr inż. Tomasz Zdun.
Instrukcja switch switch (wyrażenie) { case wart_1 : { instr_1; break; } case wart_2 : { instr_2; break; } … case wart_n : { instr_n; break; } default.
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
Magic Janusz ROŻEJ Komtech Sp. z o.o.
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
Silverlight 4 dla Windows Phone 7
1.
Bazy Danych Programowanie w SQL Wojciech St. Mościbrodzki
An island nation located in the south-west Pacific
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 6.
Piotr Czapiewski Wydział Informatyki ZUT Wykład 2.
Waldemar Bartyna Pytania egzaminacyjne 1.
Zapytania ( 3.0 ) wyrażenia zapytaniowe - querry expressions przestrzeń nazw LINQ - Language-Integrated Query 3 etapy : 1. określenie źródła danych, 2.
Zapis prezentacji:

PLATFORMY TECHNOLOGICZNE LINQ mgr inż. Tomasz Gawron

Czym jest LINQ Wprowadzony w.NET 3 Daje możliwość unifikacji dostępu do różnego typu danych Uproszczone odpytywanie obiektów, daych i XML poprzez integrację zapytań z językiem programownia Umożliwia odpytywanie kolekcji implementujących IEnumerable<>, przykładowo tablicy, listy, XML DOM, tabel dazy danych Wprowadza zbliżoną do SQL składnię niezależną od źródła danych Oferuje sprawdzanie typów oraz dynamiczne tworzenie zapytań. Namespace System.Linq 2 Platformy Technologiczne 2012

Architektura LINQ 3 Platformy Technologiczne 2012

Providery LINQ Microsoft: LINQ to Objects LINQ to SQL LINQ to XML LINQ to DataSet LINQ to Entities (EntityFramework) ParallelLINQ Dostawcy zewnętrzni: LINQ to Amazon LINQ to NHibernate LINQ to Active Directory LINQ to Google LINQ to MySQL LINQ to Excel LINQ to Sharepoint … 4 Platformy Technologiczne 2012

Dlaczego LINQ? Platformy Technologiczne List customers = new List (); SqlConnection c = new SqlConnection(ConnectionString); SqlCommand cmd = new c.Name, c.Phone, c.ID FROMM Customers c WHERE c.City "USA"); DbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Customer cust = new Customer(); cust.CompanyName = dr.GetString(0); cust.ContactName = dr.GetString(1); cust.Country = dr.GetString(2); cust.CustomerID = dr.GetString(3); } dr.Close(); return customers; List customers = new List (); SqlConnection c = new SqlConnection(ConnectionString); SqlCommand cmd = new c.Name, c.Phone, c.ID FROMM Customers c WHERE c.City "USA"); DbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Customer cust = new Customer(); cust.CompanyName = dr.GetString(0); cust.ContactName = dr.GetString(1); cust.Country = dr.GetString(2); cust.CustomerID = dr.GetString(3); } dr.Close(); return customers; Błędy: Błąd składniowy w SQL – FROMM Niepoprawna nazwa parametru (o vs. 0) Polecenie nie połączone z połączeniem Połącznie nie otworzone Połączenie nie zamknięte Elementy nie dodane do listy wynikowej Pobieramy większą liczbę niż zwraca select

Dlaczego LINQ? Platformy Technologiczne class Contact { … }; List contacts = new List (); foreach(Customer c in customers) { if(c.State == WA) { Contact ct = new Contact(); ct.Name = c.Name; ct.Phone = c.Phone; contacts.Add(ct); } var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone };

Dlaczego LINQ? Platformy Technologiczne Zunifikowany dostęp do obiektów, obiektów relacyjnych, XML Sprawdzanie typów oraz wspacie IntelliSense Dostęp do funkcjonalności podobnych do SQL oraz XQuery z poziomu języka Rozszerzenia dla jezyków / API

Style zapytania Platformy Technologiczne W LINQ zapytania możemy tworzyć na 2 sposoby SQL – like W oparciu o metody IEnumerable tall = from p in people where p.Height > 200 select p; IEnumerable young = people.Where(p => p.Age p);

Elementy zapytania Platformy Technologiczne Każde zapytanie składa się z 3 niezależnych akcji: 1. Pobranie źródła danych. 2. Stworzenie zapytania. 3. Wykonanie zapytania. class IntroToLINQ { static void Main() { // The Three Parts of a LINQ Query: // 1. Data source. int[] numbers = new int[5] { 0, 1, 2, 3, 4}; // 2. Query creation. // numQuery is an IEnumerable var numQuery = from num in numbers where (num % 2) == 0 select num; // 3. Query execution. foreach (int num in numQuery) { Console.Write("{0,1} ", num); }

Podstawowe operatory Platformy Technologiczne OperatorDziałanie WhereZwraca elementy, dla których warunek zwraca true SelectDla każdego elementu w kolekcji zwraca wartość przekazaną w operatorze FirstZwraca pierwszy element kolekcji LastZwraca ostatni element kolekcji SingleZwraca pojedynczy element kolekcji OrderBySortuje kolekcję wynikową zgodnie z zadanym predykatem DistinctUsuwa z kolekcji wynikowej duplikaty CountZwraca ilość rekordów w kolekcji wynikowej AverageZwraca średnią wartość dla pola kolekcji wynikowej JoinPozwala na złączenie dwóch kolekcji w oparciu o przekazane klucze

LINQ to Objects Platformy Technologiczne using System; using System.Linq; using System.Collections.Generic; class app { static void Main() { string[] names = { "Burke", "Connor", "Frank", "Everett", "Albert, "George", "Harris", "David" }; Func filter = s => s.Length == 5; Func extract = s => s; Func project = s => s.ToUpper(); IEnumerable expr = names.Where(filter).OrderBy(extract).Select(project); foreach (string item in expr) Console.WriteLine(item); }

LINQ to DataSet Platformy Technologiczne DataSet w pełni zintegrowany z LINQ Działa dla DataSet typowanego i nietypowanego Łączenie, grupowanie danych w DataTable Tworzenie widoków na wielu DataTable DataSet ds = new DataSet(); FillTheDataSet(ds); DataTable dtPeople = ds.Tables["People"]; IEnumerable query = from people In dtPeople.AsEnumerable() select people; foreach (DataRow p in query) Response.Write(p.Field (FirstName"));

LINQ to SQL Platformy Technologiczne Zapewnia mapowanie obiektowo - relacyjne (ORM) z.NET Framework dla baz Microsoft SQL Server Użycie silnie typowanych danych Zintegrowany dostęp do danych Mapowanie tabel i wierszy na klasy i obiekty Zbudowane na ADO.NET Mapowanie Poprzez atrybuty lub zewnętrznie Ręcznie lub poprzez designer Relacje mapują się na properties Persistence Sledzenie zmian Aktualizacja poprzez SQL

LINQ to SQL Platformy Technologiczne SQL Server LINQ to SQL from c in db.Customers where c.City == "London" select c.CompanyName LINQ Query SQL Query SELECT CompanyName FROM Cust WHERE City = 'London' Wiersze Obiekty SubmitChanges() DML / Procedura składowana db.Customers.Add(c1); c2.City = Seattle"; db.Customers.Remove(c3); INSERT INTO Customers… UPDATE Customers … DELETE FROM Customers … Aplikacja

LINQ to SQL Platformy Technologiczne Select Pobieranie wierszy jest osiągane poprzez pisanie zapytania w dowolnym języku oraz jego wykonanie. Za translację na zapytanie SQL odpowiedzialna jest warstwa LINQ to SQL PersonDataClassesDataContext dbPeople = new PersonDataClassesDataContext(); var query = from p in dbPeople.Peoples where p.Age > 18 select p; foreach (var ppl in query) { Response.Write(ppl.FirstName); }

LINQ to SQL Platformy Technologiczne Insert Dodanie obiektów do stworzonego modelu,a następnie wywołanie SubmitChanges na stworzonym obiekcie DataContext. PersonDataContext dbPeople = new PersonDataContext(); People p = new People() {FirstName = "Gyan", LastName = "Singh", Age = 33}; dbPeople.Peoples.InsertOnSubmit(p); // At this point, the new People object is added in the object model. // In LINQ to SQL, the change is not sent to the database until SubmitChanges is called. dbPeople.SubmitChanges();

LINQ to SQL Platformy Technologiczne Update Pobierany wartość z bazy i edytujemy jej wartość w przypisanym obiekcie. Po dokonaniu zmian wywołujemy SubmitChanges na obiekcie typu DataContext. PersonDataContext dbPeople = new PersonDataContext(); var query = from p in dbPeople.Peoples select p; var intAge = 18; foreach (var ppl in query){ ppl.Age = intAge; intAge++; } dbPeople.SubmitChanges();

LINQ to SQL Platformy Technologiczne Delete Usuwamy obiekt z kolekcji, następnie wołamy SubmitChanges na obiekcie typu DataContext. PersonDataContext dbPeople = new PersonDataContext(); var query = from p in dbPeople.Peoples where p.PersonID == 1 select p; if (query.Count() > 0) { dbPeople.Peoples.DeleteOnSubmit(query.First()); dbPeople.SubmitChanges(); }

LINQ to XML Platformy Technologiczne Stworzony by umożliwić korzystanie z XML bez konieczności poznawania Xpath/XSLT Umożliwia przetwarzanie w pamięci dokumentu XML w celu pobrania kolekcji elementów i atrybutów Tworzenie zapytań z wieloma źródłami danych Możliwość użycia wyników jako parametrów dla Xelement lub Xattribute Tworzenie drzew XML Wydajniejszy niż XPath Łatwiejszy i bogatszy niż niskopoziomowe sposoby

LINQ to XML Platformy Technologiczne Podstawowe klasy (System.Xml.Linq) XElement – reprezentuje węzeł w strukturze DOM, dokument XML składa się z drzewa XElement XAttribute – reprezentuje atrybuty XML XNamespace – reprezentuje namespace XML XName XDocument – reprezentuje kompletny dokument XML

Hierarchia klas Platformy Technologiczne

Przykład – tworzenie XML Platformy Technologiczne TodayXmlDocument doc = new XmlDocument(); XmlElement contacts = doc.CreateElement("contacts"); foreach (Customer c in customers) if (c.Country == "USA") { XmlElement e = doc.CreateElement("contact"); XmlElement name = doc.CreateElement("name"); name.InnerText = c.CompanyName; e.AppendChild(name); XmlElement phone = doc.CreateElement("phone"); phone.InnerText = c.Phone; e.AppendChild(phone); contacts.AppendChild(e); } doc.AppendChild(contacts); Great Food … XElement contacts = new XElement("contacts", from c in customers where c.Country == "USA select new XElement("contact", new XElement("name", c.CompanyName), new XElement("phone", c.Phone) ) );

Przykład – przeszukiwanie XML Platformy Technologiczne AAA XXX ABB YYY CCC ZZZ //Using LINQ Extension Methods against an XML File XDocument people = //Casting to Xelement IEnumerable xmlResult; xmlResult = people.Descendants("person").Where(p => p.Element("firstname").Value.StartsWith("A")); //Total count of records. txtResultCount.Text = xmlResult.Count().ToString(); //Person First Name. txtPersonFirstName.Text = xmlResult.First().FirstNode; //Person Last Name. txtPersonLastName.text = xmlResult.First().LastNode;

LINQ to XML - wydajność Platformy Technologiczne Liczba operacji na sekundę

Parallel LINQ Platformy Technologiczne Umożliwia równoległe wykonywanie zapytania Zapytanie najpierw podlega analizie Wyniki muszą być scalone w pętli foreach