„Adatvezérelt alkalmazások fejlesztése (AAF) - ZH- és vizsgajegyzetek” változatai közötti eltérés
a (Harapeti átnevezte a(z) AafjegyzetAdateleres lapot a következő névre: Adatvezérelt alkalmazások fejlesztése (AAF) - ZH- és vizsgajegyzetek: Feleslegesek a külön-külön jegyzetlapok, egybe fogom ömleszteni őket, így könnyebben olv…) |
a (typo-k javítása) |
||
(3 közbenső módosítás, amit 2 másik szerkesztő végzett, nincs mutatva) | |||
1. sor: | 1. sor: | ||
− | {{ | + | {{Vissza|Adatvezérelt_alkalmazások_fejlesztése}} |
==Adatelérés== | ==Adatelérés== | ||
37. sor: | 37. sor: | ||
− | [[ | + | ==LINQ to SQL== |
+ | |||
+ | Leképzés: Meta adatokkal | ||
+ | |||
+ | DataContext: Ezen keresztül csinálunk mindent | ||
+ | |||
+ | Lekérdezések: | ||
+ | * IQueryable interface: | ||
+ | ** Expression tulajdonság | ||
+ | ** Execute() fv | ||
+ | * Késleltetett lekérdezés | ||
+ | * A végrehajtás során egy megfelelő provider lefordítja T-SQL-é | ||
+ | |||
+ | Relációk kezelése: | ||
+ | * EntityRef, EntitySet: Késleltetett betöltés bejárás esetén is | ||
+ | ** Távoli lekérdezés: Szerveren fut(alapértelmezett) | ||
+ | ** Hely lekérdezés: Betöltjük előre | ||
+ | |||
+ | Join: Olyan táblák összekapcsolására, melyek között nincs kapcsolat | ||
+ | |||
+ | Névtelen típus: Olyan típus, melyet a fordító hoz létre, egyébként nem létezik | ||
+ | * select new {Név=érték,..} | ||
+ | * Nincs változáskövetés, mentés | ||
+ | |||
+ | Objektumok egyedisége: Ha két különböző helyen olvassuk be az adatot, akkor ugyanazt az objektumot kapjuk vissza | ||
+ | * Identitás táblába kerül, ahol mindig a legelőször felolvasott objektumok vannak(tehát ha felolvassa, és már létezik, akkor a felolvasottat eldobja) | ||
+ | * ObjectTrackingEnabled: kikapcsolható, de akkor read-only lesz | ||
+ | * DataContext TableAttach: Olyan objektumokat is kezel, melyeket nem ő hozott létre | ||
+ | |||
+ | Öröklés: | ||
+ | * Single Table Mapping(csak ezt támogatja): | ||
+ | ** Discriminator oszlop: [Column( IsDiscriminator = true )] | ||
+ | ** Táblához hozzá kell venni, hogy milyen értékei lehetnek a discriminatornak: | ||
+ | <pre> | ||
+ | [Table] | ||
+ | [InheritanceMapping( Code = "C", Type = typeof( Customer ) )] | ||
+ | [InheritanceMapping( Code = "E", Type = typeof( Employee ) )] | ||
+ | [InheritanceMapping( Code = "P", Type = typeof( PartTimeEmployee ) )] | ||
+ | [InheritanceMapping( Code = "X", Type = typeof( Contact ), IsDefault = true )] | ||
+ | class Contact | ||
+ | </pre> | ||
+ | |||
+ | Módosítás: | ||
+ | * Change Tacking Service: Figyeli a módosításokat | ||
+ | * DataContext.SubmitChanges(): menti a módosításokat, egyetlen tranzakcióban | ||
+ | * Változások követése: | ||
+ | ** Eredeti értékeket is tároljuk: overhead | ||
+ | ** INotifyPropertyChanging: Ha változott, szól | ||
+ | * Ha mentéskor látszik, hogy módosult a rekord: | ||
+ | ** Verziószámnak tekinthető oszlop címkézése: [Column (UpdateCheck=Always|Never||WhenChanged, IsVersion=TrueFalse)] | ||
+ | ** ConflictMode: Beállíthatjuk, hogy az első hibánál legyen kivétel, vagy próbálja meg mindet | ||
+ | * Elosztott tranzakciót is készíthetünk | ||
+ | |||
+ | Tárolt eljárások: | ||
+ | * [StoredProcedure(..)], [Function(..)] jelölést kap az egyik metódus, [Parameter(..)]-rel paraméterezhető | ||
+ | * Erősen típusos visszatérési érték | ||
+ | |||
+ | Adatbázis létrehozása: | ||
+ | * DataContext.DatabaseExists() | ||
+ | * DataContext.DeleteDatabase() | ||
+ | * DataContext.CreateDatabase() | ||
+ | |||
+ | -- [[SallaiTamas|sashee]] - 2009.06.03. | ||
+ | |||
+ | ==WPF== | ||
+ | |||
+ | Tulajdonságai: | ||
+ | * Teljeskörű integráció: 2D,3D, beszédfelismerés,... | ||
+ | * Felbontás független: Nincs pixel | ||
+ | * Hardveres gyorsítás: D3D-re épülve harveresen gyorsított, ami nem, az szoftveresen | ||
+ | * Deklaratív szemlélet: XAML | ||
+ | * Testreszabhatóság: Nem csak szöveg, hanem bármilyen Control lehet egy gombban pl,template, skin | ||
+ | * Egyszerű telepítés: Hagyományos, böngészőben | ||
+ | |||
+ | Architektúra: | ||
+ | * milcore: DirectX támogatás | ||
+ | * Presentation Core | ||
+ | * Presentation Framework | ||
+ | |||
+ | Főbb osztályok: | ||
+ | * System.Threading.DispatcherObject: UI objektumokat csak a létrehozó szálból lehet módosítani, ezért egy dispatcher szükséges, aminek üzeneteket lehet küldeni, ami módosítja az objektumot | ||
+ | * System.Windows.DependencyObject: Propertyben változás esetén másik property is változik. Lehet validálni is közben. | ||
+ | * System.Windows.Media.Visual: Pixelek megjelenítése a képernyőn. A Visual tree-t tartja fent, kirajzolásnál ezt járja be. | ||
+ | * System.Windows.UIElement: LayoutManagerek használata. | ||
+ | ** Fázisok: | ||
+ | *** Mesaure: Mérés, a konténer megkérdezi a komponenstől, hogy mennyi helyet fog foglalni | ||
+ | *** Arrange: Elrendezi a gyerekeket | ||
+ | ** Input szignál: | ||
+ | *** Tunneling(preview fázis): Tartalmazási hierarhia csúcsától a célobjektumig | ||
+ | *** Bubbling(tényleges fázis): Célobjektumtól felfele, ameddig nem kezelik | ||
+ | * System.Windows.FrameworkElement: Stílusok használata | ||
+ | ** Explicit: Pontosan megmondjuk, hogy melyik objektumon akarjuk alkalmazni | ||
+ | ** Implicit: Adott osztály összes példányán alkalmazzuk | ||
+ | * System.Windows.Control.Control: Vezérlők Visual tree-jét lehet vele átírni | ||
+ | |||
+ | XAML: | ||
+ | * XML leírás, deklaratív | ||
+ | * Tag-ek: példányosítás, attribútum: property beállítása | ||
+ | * Default konstruktor hívódik mindig | ||
+ | * Eseménykezelés: code behind | ||
+ | * Összetett típusú property: XML gyerek, ahol oszály.propertynév alakban lesz beállítva | ||
+ | * Típus konverterek: Ha nem megfelelő a típus, akkor keres egy megfelelőt, és azzal konvertál | ||
+ | * Markup extensions: {} jelek között, x:Null ; x:Static ; x:Binding lehet. ...=... nevesített, e nélkül nm nevesített | ||
+ | * Objektumok gyerekei: | ||
+ | ** Content property: Osztályok kijelölnek egy propertyt, amelyet az XML tag gyereke fog állítani | ||
+ | ** Kollekció elemei: | ||
+ | *** Lista: IList-et implementálja. | ||
+ | *** Dictionary: IDictionary-t implementálja. x:Key=... attribútuma kell legyen az elemeknek | ||
+ | ** Típus konverzió: Content property típuskonvertere, absztakt osztály típuskonvertere | ||
+ | * Feldolgozása: | ||
+ | ** Futás idejű betöltés: XamlReader.load(..), majd FindName-vel lehet gyerekeket(x:Name) | ||
+ | ** Partial class: c:Class | ||
+ | ** BAML: bináris | ||
+ | ** .g.cs: osztály, betölti a BAML-t, elvégzi az összerendeléseket, feliratkozik az eseményekre | ||
+ | ** Procedurális kód XAML-ben: kerüljük | ||
+ | ** .NET osztály elérése XAML-ből | ||
+ | |||
+ | WPF belülről: | ||
+ | * Logikai és vizuális fa | ||
+ | * Dependencz property | ||
+ | ** Változás értesítés | ||
+ | ** Érték öröklés | ||
+ | * Attached property: Gyerekelemek property-jeinek a beállítása | ||
+ | * Routed events: Felefele áramlanak az események, amíg el nem kapjuk | ||
+ | * Attached event: Olyan eseményekre is felírhatjuk az elemet, amelyet nem dobhat, de akkor az összes gyere által dobott adott eseményt megkapja | ||
+ | |||
+ | WPF controllok: | ||
+ | * Content control: Egyetlen gyerekük lehet | ||
+ | ** Button, RepeatButton, ToggleButton, CheckBox, RadioButton | ||
+ | ** Label, Tooltip, Frame | ||
+ | ** GroupBox, Expander | ||
+ | * Items Control: Tetszőleges mennyiségű gyerekük lehet | ||
+ | * Range Control: Előre megadott számérték közötti számértéket jelenítenek meg | ||
+ | * Text Control: TextBox, RichTextbox, PasswordBox | ||
+ | |||
+ | Méretezés, pozícionálás, transzformálás: | ||
+ | * Méret: | ||
+ | ** Width, Height | ||
+ | ** Margin, Padding | ||
+ | ** Visibility | ||
+ | * Pozicionálás: | ||
+ | ** Alignment | ||
+ | ** Content alignment | ||
+ | * Transzformációk: | ||
+ | ** LayoutTransform: Elrendezés meghatározása előtt | ||
+ | ** RenderTransform: Után | ||
+ | |||
+ | Elrendezések Panelek segítségével: | ||
+ | * Canvas: Abszolút pozicionálás | ||
+ | * StackPanel: Függőlegesen/vízszintesen folytonosan | ||
+ | * WrapPanel: Ha sok, akkor következő sor | ||
+ | * DockPanel: Egyes oldalakhoz köthetjük | ||
+ | * Grid: Táblázatos | ||
+ | |||
+ | Adatkötés: Két property értékének az összekötése | ||
+ | * {Binding ElementName=.. Path=} | ||
+ | ** {Binding RelativeSource={RelativeSource Self}} | ||
+ | ** {Binding RelativeSource={RelativeSource TemplatedParent}} | ||
+ | ** {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type | ||
+ | desiredType}}} | ||
+ | ** {Binding RelativeSource={RelativeSource AncestorType={x:Type desiredType}}} | ||
+ | ** {Binding RelativeSource={RelativeSource PreviousData}} | ||
+ | * Kötés kollekcióhoz | ||
+ | * Adat konvertálás | ||
+ | |||
+ | Erőforrások | ||
+ | * Bináris erőforrások | ||
+ | * Logikai erőforrások | ||
+ | |||
+ | Style, Control Template: | ||
+ | * Style: propertyket összefog, hogy később együtt tudjuk beállítani őket | ||
+ | * Control template: Control Visual tree-jének beállítása | ||
+ | |||
+ | -- [[SallaiTamas|sashee]] - 2009.06.01. | ||
+ | |||
+ | |||
+ | ==Adattárházak== | ||
+ | |||
+ | Alaptulajdonságok: | ||
+ | * Időfüggő: Megállapítható, mely időponthoz van az adat kötve | ||
+ | * Változatlan: Nincs update | ||
+ | * Tematikus: Nem tartalmazzák az összes adatot, csak amelyikre szükség van | ||
+ | * Integrált: Központian tárol | ||
+ | |||
+ | OLTP és adattárház összehasonlítása: | ||
+ | * Elsődleges cél: | ||
+ | ** Aktuális adatok feldolgozása | ||
+ | ** Döntéstámogatás | ||
+ | * Felhasználók: | ||
+ | ** Ügyintézők | ||
+ | ** Menedzsment | ||
+ | * Terhelés jellege: | ||
+ | ** Egyszerű lekérdezés, adatmódosítás | ||
+ | ** Összetett lekérdezés | ||
+ | * Jellemző mérőszám: | ||
+ | ** Feldolgozott tranzakciók száma | ||
+ | ** Lekérdezésre adott válasz ideje | ||
+ | |||
+ | Architektúrák: | ||
+ | * Kétrétegű: A felhasználók közvetlenül az adattárházhoz kapcsolódnak, ami az OLTP-ből nyeri az adatokat | ||
+ | * Háromrétegű: A felhasználók adatpiacokhoz(data mart) férnek hozzá, ahol tematikusan kiválasztott részek és származtatott adatok vannak | ||
+ | |||
+ | Adattárház építésének lépései: | ||
+ | * Adatok kinyerése: Milyen adatokra van szükség, hogyan érjük el(ha pl. nem relációs) | ||
+ | * Tisztítása: | ||
+ | ** Hiányzó adat kezelése | ||
+ | *** Teljes rekord elvetése | ||
+ | *** A hiányzó adat bekérése. | ||
+ | *** A hiányzó adat helyettesítése | ||
+ | **** Konstans értékkel | ||
+ | **** Átlagértékkel | ||
+ | **** Csoportra jellemző átlagértékkel | ||
+ | **** Legvalószínűbb értékkel | ||
+ | ** Zajszűrés: | ||
+ | *** Numerikus adatok zajszűrése: | ||
+ | **** Binning: minden k számú elemcsoportot helyettesít az átlagával | ||
+ | **** Csoportképzés: Több attribútum együttes előfordulását vizsgálják, majd az egymás közelében elhelyezkedő adatokat a csoportot jellemző adatokkal helyettesítjük (csoport súlypontjával) | ||
+ | **** Regresszió: Ebben az esetben is több attribútum együttes előfordulását vizsgáljuk, az egyes attribútumok közt valamilyen függvénykapcsolatot keresünk (általában lineárisat), majd az egyes értékeket a regressziós függvény értékeivel helyettesítjük. | ||
+ | *** Szöveges adatok: | ||
+ | **** Szótár alapú | ||
+ | **** Klaszterező: Hash fv-vel számokká képezzük le | ||
+ | * Transzformálása: Az adatok az adattárház egységes sémájára történő leképzés | ||
+ | ** Rekord szintű: | ||
+ | *** Kiválasztás | ||
+ | *** Összekapcsolás | ||
+ | ** Mező szintű: Típuskonverzió | ||
+ | *** Algoritmikus | ||
+ | *** Lekérdezéssel | ||
+ | * Betöltése és indexelése: Pillanatkép és histórikus adatok | ||
+ | |||
+ | Multidimenzionális adatmodell: | ||
+ | * Alapelemei: | ||
+ | ** Dimenziós adatok: Ezen adatok mentén történik az elemzések végrehajtása | ||
+ | ** Hierarchiaszintek: Felbontás | ||
+ | ** Tényadatok: Amit elemzünk | ||
+ | * Sémák: | ||
+ | ** Csillag: A tényadatokat tartalmazó táblához idegen kulcsokkal csatlakoznak a dimenziós tánlák | ||
+ | ** Hópehely: A tényadatokhoz csak a legalacsonyabb hierarchiaszint van csatolva, és ahhoz van a többi, így joinolni kell. | ||
+ | |||
+ | OLAP(Online Analytical Processing) rendszerek: | ||
+ | * FASMI(Fast Analysis of Shared Multidimensional Information) teszt: | ||
+ | ** Fast: Gyors | ||
+ | ** Analysis: A felhasználó számára szükséges üzleti és statisztikai elemzések elkészítésére alkalmas. | ||
+ | ** Shared: Megosztott | ||
+ | ** Multidimensional | ||
+ | ** Information: Összes adat és származtatott adat elérhető | ||
+ | |||
+ | OLAP kocka: | ||
+ | * Dimenzió: A kocka élei | ||
+ | * Hierarchia: Elvégezhető elemzések mélysége | ||
+ | * Aggregátum: Származtatott mennyiségek | ||
+ | |||
+ | OLAP kocka műveletek: | ||
+ | * Szeletelés: 1 érték rögzítése, a diemnziószám csökken | ||
+ | * Részkocka kiválasztása: Értékek megkötése | ||
+ | * Lefúrás: Hierarchiaszint csökkentése | ||
+ | * Felfelé görgetés: hierarchiaszint növelése | ||
+ | * Forgatás: A megjelenített eredményt elforgatja | ||
+ | |||
+ | OLAP kocka tárolása: | ||
+ | * ROLAP: Relációs | ||
+ | * MOLAP: Saját, multidimenziós | ||
+ | * HOLAP: Hibrid | ||
+ | |||
+ | Előkalkuláció mértéke: Ne legyen túl nagy, se túl kicsi | ||
+ | |||
+ | -- [[SallaiTamas|sashee]] - 2009.06.02. | ||
+ | |||
+ | ==Entity Framework== | ||
+ | |||
+ | ''EDM (Entity Data Modell):'' | ||
+ | * Conceptual Schema Definition Language (CSDL) | ||
+ | * Store Schema Definition Language (SSDL) | ||
+ | * Mapping Specification Language (MSL) | ||
+ | * Működés | ||
+ | ** ObjectContext | ||
+ | ** Adattár -> Store Providers -> Entity Provider -> Object Services | ||
+ | |||
+ | ''Lekérdezési lehetőségek:'' | ||
+ | * Entity SQL + Object Services | ||
+ | ** Ha LINQ-nél nagyobb kifejezőerőre van szükség | ||
+ | ** Ha dinamikusan összeállított lekérdezésekre van szükség | ||
+ | ** Ha a teljesítmény nagyon fontos | ||
+ | * Entity SQL + Entity Client | ||
+ | ** Az adatokat sorban (streamelve) szeretnénk lekérdezni | ||
+ | ** Meglévő alkalmazások átírásakor | ||
+ | * LINQ to Entities | ||
+ | ** Minden más esetben | ||
+ | |||
+ | ''ORM leképezési lehetőségek EF-ben:'' | ||
+ | * TPH (Table Per Hierarchy) | ||
+ | ** Minden osztály egy táblába | ||
+ | ** EDM designer támogatja | ||
+ | * TPT (Table Per Type) | ||
+ | ** Minden osztály külön táblába (az absztraktak is) | ||
+ | ** EDM designer támogatja | ||
+ | * TPC (Table Per Class) | ||
+ | ** Minden valós osztály külön táblába (az absztraktak nem) | ||
+ | ** EDM designer '''nem''' támogatja | ||
+ | |||
+ | ''Egyéb szolgáltatások:'' | ||
+ | * Komplex típusok használata | ||
+ | * DefiningQuery | ||
+ | * Lazy loading | ||
+ | * Tárolt eljárások hívása | ||
+ | |||
+ | ''Asszociáció típusok:'' | ||
+ | * Külső kulcsos asszociáció | ||
+ | * Független asszociácó | ||
+ | ** A több-több kapcsolatat mindig ezzel valósítjuk meg | ||
+ | ** Mindig van navigation property | ||
+ | |||
+ | ''Változáskövetés:'' | ||
+ | * Eredeményhalmazok összefűzése | ||
+ | ** NoTracking | ||
+ | ** AppendOnly | ||
+ | ** OverwriteChanges | ||
+ | ** PreserveChanges | ||
+ | * EntityState | ||
+ | ** Detached | ||
+ | ** Unchanged | ||
+ | ** Added | ||
+ | ** Deleted | ||
+ | ** Modified | ||
+ | * Entitás típusok | ||
+ | ** Entity object leszármazott | ||
+ | *** Automatikus változáskövetés | ||
+ | *** Lazy loading támogatás | ||
+ | *** Hátránya, hogy nem tudunk csak az EntityObjectből származtatni | ||
+ | ** POCO | ||
+ | *** Nincs automatikus változáskövetés, a DetectChanges metódust kell hívni | ||
+ | *** Nincs lazy loading támogatás | ||
+ | ** POCO proxy | ||
+ | *** Automatikus változáskövetés | ||
+ | *** Lazy loading támogatás | ||
+ | *** Futási időben leszármaztat az osztályunkból, így tudja biztosítani a fenti szolgáltatásokat, ezért speciális követelmények vonatkoznak a POCO osztályunkra | ||
+ | ** Self-Tracking Entities | ||
+ | *** nem függ az EF-től | ||
+ | *** Tulajdonképpen ez egy csináld magad megoldás, ugyanazt implementáljuk, mint amit az EF tud | ||
+ | * SaveChanges | ||
+ | |||
+ | ''Két és többrétegű alkalmazások:'' | ||
+ | * Kétrétegű | ||
+ | ** Az entitások nem hagyják el az OC alkalmazástartományát (nincs sorosítás) | ||
+ | ** Az állapotkezelést az OC megoldja ha a funkciók kompaktak (például egy dialógus ablak) | ||
+ | * Többrétegű alkalmazás | ||
+ | ** Az entitás kikerül az OC alkalmazástartományából | ||
+ | ** Az állapotkövetés nem bízható az OC-ra | ||
+ | ** A változásokat az OC tudomására kell hozni | ||
+ | |||
+ | -- [[KoviBalu]] - 2011.06.04. | ||
+ | |||
+ | [[Kategória:Mérnök informatikus]] |
A lap jelenlegi, 2014. június 12., 05:04-kori változata
Tartalomjegyzék
Adatelérés
ADO .NET: relációs adatbázisok kezelése
Adatelérési modell:
- Kapcsolatalapú modell: Folyamatosan fenntartunk egy kapcsolatot egy DataReader segítségével
- Kapcsolatnélküli modell: Kiolvassuk, lezárjuk a kapcsoltatot, módosítunk, visszaírjuk. DataSet segítségével
- DataAdapter: Kezeli a Connection-t, olvas, ír az adatbázisból/ba
- DataSet: Mini adatbázis, a nagytestvér másolata, amíg nincs kapcsolat
- Teljesítmény: Legkevesebb kapcsolódás
ADO .NET a gyakorlatban:
- Connection String: Az adatbázishoz csatlakozás minden információját tárolja
- ConnectionStringBuilder: Felépíti a ConnectionString-et, így nehezebb támadni
- Kapcsolódás: Connection.open();
- Command: utasítások végrehajtása
- DataReader: Csak olvasható adatlekérés
- DataAdapter: Adapter.Fill-el lehet DataSet-et feltölteni
- DataRow állapotai:
- Unchanged: változatlan
- Added: újonnan lett létrehozva
- Deleted: törlődött
- Modified: módosult
- Detached: a sor nem része egy DataRowCollection-nek
- Adat sorok verziói:
- Original: a kiindulási érték
- Current: aktuális érték
- Default: DataRowState-től függ
- Proposed: szerkesztés alatt álló érték
- DataRow állapotai:
- Tranzakciók: Connection.beginTransaction-nel visszakapunk egy Tranzakciót, ezt kell a Command-okhoz rendelni, végül commit vagy rollback
- DataSet, típusos DataSet
- DataView: DataSet-ből nézet, mely folyamatosan változik a DataSet-tel
-- sashee - 2009.06.01.
LINQ to SQL
Leképzés: Meta adatokkal
DataContext: Ezen keresztül csinálunk mindent
Lekérdezések:
- IQueryable interface:
- Expression tulajdonság
- Execute() fv
- Késleltetett lekérdezés
- A végrehajtás során egy megfelelő provider lefordítja T-SQL-é
Relációk kezelése:
- EntityRef, EntitySet: Késleltetett betöltés bejárás esetén is
- Távoli lekérdezés: Szerveren fut(alapértelmezett)
- Hely lekérdezés: Betöltjük előre
Join: Olyan táblák összekapcsolására, melyek között nincs kapcsolat
Névtelen típus: Olyan típus, melyet a fordító hoz létre, egyébként nem létezik
- select new {Név=érték,..}
- Nincs változáskövetés, mentés
Objektumok egyedisége: Ha két különböző helyen olvassuk be az adatot, akkor ugyanazt az objektumot kapjuk vissza
- Identitás táblába kerül, ahol mindig a legelőször felolvasott objektumok vannak(tehát ha felolvassa, és már létezik, akkor a felolvasottat eldobja)
- ObjectTrackingEnabled: kikapcsolható, de akkor read-only lesz
- DataContext TableAttach: Olyan objektumokat is kezel, melyeket nem ő hozott létre
Öröklés:
- Single Table Mapping(csak ezt támogatja):
- Discriminator oszlop: [Column( IsDiscriminator = true )]
- Táblához hozzá kell venni, hogy milyen értékei lehetnek a discriminatornak:
[Table] [InheritanceMapping( Code = "C", Type = typeof( Customer ) )] [InheritanceMapping( Code = "E", Type = typeof( Employee ) )] [InheritanceMapping( Code = "P", Type = typeof( PartTimeEmployee ) )] [InheritanceMapping( Code = "X", Type = typeof( Contact ), IsDefault = true )] class Contact
Módosítás:
- Change Tacking Service: Figyeli a módosításokat
- DataContext.SubmitChanges(): menti a módosításokat, egyetlen tranzakcióban
- Változások követése:
- Eredeti értékeket is tároljuk: overhead
- INotifyPropertyChanging: Ha változott, szól
- Ha mentéskor látszik, hogy módosult a rekord:
- Verziószámnak tekinthető oszlop címkézése: [Column (UpdateCheck=Always|Never||WhenChanged, IsVersion=TrueFalse)]
- ConflictMode: Beállíthatjuk, hogy az első hibánál legyen kivétel, vagy próbálja meg mindet
- Elosztott tranzakciót is készíthetünk
Tárolt eljárások:
- [StoredProcedure(..)], [Function(..)] jelölést kap az egyik metódus, [Parameter(..)]-rel paraméterezhető
- Erősen típusos visszatérési érték
Adatbázis létrehozása:
- DataContext.DatabaseExists()
- DataContext.DeleteDatabase()
- DataContext.CreateDatabase()
-- sashee - 2009.06.03.
WPF
Tulajdonságai:
- Teljeskörű integráció: 2D,3D, beszédfelismerés,...
- Felbontás független: Nincs pixel
- Hardveres gyorsítás: D3D-re épülve harveresen gyorsított, ami nem, az szoftveresen
- Deklaratív szemlélet: XAML
- Testreszabhatóság: Nem csak szöveg, hanem bármilyen Control lehet egy gombban pl,template, skin
- Egyszerű telepítés: Hagyományos, böngészőben
Architektúra:
- milcore: DirectX támogatás
- Presentation Core
- Presentation Framework
Főbb osztályok:
- System.Threading.DispatcherObject: UI objektumokat csak a létrehozó szálból lehet módosítani, ezért egy dispatcher szükséges, aminek üzeneteket lehet küldeni, ami módosítja az objektumot
- System.Windows.DependencyObject: Propertyben változás esetén másik property is változik. Lehet validálni is közben.
- System.Windows.Media.Visual: Pixelek megjelenítése a képernyőn. A Visual tree-t tartja fent, kirajzolásnál ezt járja be.
- System.Windows.UIElement: LayoutManagerek használata.
- Fázisok:
- Mesaure: Mérés, a konténer megkérdezi a komponenstől, hogy mennyi helyet fog foglalni
- Arrange: Elrendezi a gyerekeket
- Input szignál:
- Tunneling(preview fázis): Tartalmazási hierarhia csúcsától a célobjektumig
- Bubbling(tényleges fázis): Célobjektumtól felfele, ameddig nem kezelik
- Fázisok:
- System.Windows.FrameworkElement: Stílusok használata
- Explicit: Pontosan megmondjuk, hogy melyik objektumon akarjuk alkalmazni
- Implicit: Adott osztály összes példányán alkalmazzuk
- System.Windows.Control.Control: Vezérlők Visual tree-jét lehet vele átírni
XAML:
- XML leírás, deklaratív
- Tag-ek: példányosítás, attribútum: property beállítása
- Default konstruktor hívódik mindig
- Eseménykezelés: code behind
- Összetett típusú property: XML gyerek, ahol oszály.propertynév alakban lesz beállítva
- Típus konverterek: Ha nem megfelelő a típus, akkor keres egy megfelelőt, és azzal konvertál
- Markup extensions: {} jelek között, x:Null ; x:Static ; x:Binding lehet. ...=... nevesített, e nélkül nm nevesített
- Objektumok gyerekei:
- Content property: Osztályok kijelölnek egy propertyt, amelyet az XML tag gyereke fog állítani
- Kollekció elemei:
- Lista: IList-et implementálja.
- Dictionary: IDictionary-t implementálja. x:Key=... attribútuma kell legyen az elemeknek
- Típus konverzió: Content property típuskonvertere, absztakt osztály típuskonvertere
- Feldolgozása:
- Futás idejű betöltés: XamlReader.load(..), majd FindName-vel lehet gyerekeket(x:Name)
- Partial class: c:Class
- BAML: bináris
- .g.cs: osztály, betölti a BAML-t, elvégzi az összerendeléseket, feliratkozik az eseményekre
- Procedurális kód XAML-ben: kerüljük
- .NET osztály elérése XAML-ből
WPF belülről:
- Logikai és vizuális fa
- Dependencz property
- Változás értesítés
- Érték öröklés
- Attached property: Gyerekelemek property-jeinek a beállítása
- Routed events: Felefele áramlanak az események, amíg el nem kapjuk
- Attached event: Olyan eseményekre is felírhatjuk az elemet, amelyet nem dobhat, de akkor az összes gyere által dobott adott eseményt megkapja
WPF controllok:
- Content control: Egyetlen gyerekük lehet
- Button, RepeatButton, ToggleButton, CheckBox, RadioButton
- Label, Tooltip, Frame
- GroupBox, Expander
- Items Control: Tetszőleges mennyiségű gyerekük lehet
- Range Control: Előre megadott számérték közötti számértéket jelenítenek meg
- Text Control: TextBox, RichTextbox, PasswordBox
Méretezés, pozícionálás, transzformálás:
- Méret:
- Width, Height
- Margin, Padding
- Visibility
- Pozicionálás:
- Alignment
- Content alignment
- Transzformációk:
- LayoutTransform: Elrendezés meghatározása előtt
- RenderTransform: Után
Elrendezések Panelek segítségével:
- Canvas: Abszolút pozicionálás
- StackPanel: Függőlegesen/vízszintesen folytonosan
- WrapPanel: Ha sok, akkor következő sor
- DockPanel: Egyes oldalakhoz köthetjük
- Grid: Táblázatos
Adatkötés: Két property értékének az összekötése
- {Binding ElementName=.. Path=}
- {Binding RelativeSource={RelativeSource Self}}
- {Binding RelativeSource={RelativeSource TemplatedParent}}
- {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type
desiredType}}}
- {Binding RelativeSource={RelativeSource AncestorType={x:Type desiredType}}}
- {Binding RelativeSource={RelativeSource PreviousData}}
- Kötés kollekcióhoz
- Adat konvertálás
Erőforrások
- Bináris erőforrások
- Logikai erőforrások
Style, Control Template:
- Style: propertyket összefog, hogy később együtt tudjuk beállítani őket
- Control template: Control Visual tree-jének beállítása
-- sashee - 2009.06.01.
Adattárházak
Alaptulajdonságok:
- Időfüggő: Megállapítható, mely időponthoz van az adat kötve
- Változatlan: Nincs update
- Tematikus: Nem tartalmazzák az összes adatot, csak amelyikre szükség van
- Integrált: Központian tárol
OLTP és adattárház összehasonlítása:
- Elsődleges cél:
- Aktuális adatok feldolgozása
- Döntéstámogatás
- Felhasználók:
- Ügyintézők
- Menedzsment
- Terhelés jellege:
- Egyszerű lekérdezés, adatmódosítás
- Összetett lekérdezés
- Jellemző mérőszám:
- Feldolgozott tranzakciók száma
- Lekérdezésre adott válasz ideje
Architektúrák:
- Kétrétegű: A felhasználók közvetlenül az adattárházhoz kapcsolódnak, ami az OLTP-ből nyeri az adatokat
- Háromrétegű: A felhasználók adatpiacokhoz(data mart) férnek hozzá, ahol tematikusan kiválasztott részek és származtatott adatok vannak
Adattárház építésének lépései:
- Adatok kinyerése: Milyen adatokra van szükség, hogyan érjük el(ha pl. nem relációs)
- Tisztítása:
- Hiányzó adat kezelése
- Teljes rekord elvetése
- A hiányzó adat bekérése.
- A hiányzó adat helyettesítése
- Konstans értékkel
- Átlagértékkel
- Csoportra jellemző átlagértékkel
- Legvalószínűbb értékkel
- Zajszűrés:
- Numerikus adatok zajszűrése:
- Binning: minden k számú elemcsoportot helyettesít az átlagával
- Csoportképzés: Több attribútum együttes előfordulását vizsgálják, majd az egymás közelében elhelyezkedő adatokat a csoportot jellemző adatokkal helyettesítjük (csoport súlypontjával)
- Regresszió: Ebben az esetben is több attribútum együttes előfordulását vizsgáljuk, az egyes attribútumok közt valamilyen függvénykapcsolatot keresünk (általában lineárisat), majd az egyes értékeket a regressziós függvény értékeivel helyettesítjük.
- Szöveges adatok:
- Szótár alapú
- Klaszterező: Hash fv-vel számokká képezzük le
- Numerikus adatok zajszűrése:
- Hiányzó adat kezelése
- Transzformálása: Az adatok az adattárház egységes sémájára történő leképzés
- Rekord szintű:
- Kiválasztás
- Összekapcsolás
- Mező szintű: Típuskonverzió
- Algoritmikus
- Lekérdezéssel
- Rekord szintű:
- Betöltése és indexelése: Pillanatkép és histórikus adatok
Multidimenzionális adatmodell:
- Alapelemei:
- Dimenziós adatok: Ezen adatok mentén történik az elemzések végrehajtása
- Hierarchiaszintek: Felbontás
- Tényadatok: Amit elemzünk
- Sémák:
- Csillag: A tényadatokat tartalmazó táblához idegen kulcsokkal csatlakoznak a dimenziós tánlák
- Hópehely: A tényadatokhoz csak a legalacsonyabb hierarchiaszint van csatolva, és ahhoz van a többi, így joinolni kell.
OLAP(Online Analytical Processing) rendszerek:
- FASMI(Fast Analysis of Shared Multidimensional Information) teszt:
- Fast: Gyors
- Analysis: A felhasználó számára szükséges üzleti és statisztikai elemzések elkészítésére alkalmas.
- Shared: Megosztott
- Multidimensional
- Information: Összes adat és származtatott adat elérhető
OLAP kocka:
- Dimenzió: A kocka élei
- Hierarchia: Elvégezhető elemzések mélysége
- Aggregátum: Származtatott mennyiségek
OLAP kocka műveletek:
- Szeletelés: 1 érték rögzítése, a diemnziószám csökken
- Részkocka kiválasztása: Értékek megkötése
- Lefúrás: Hierarchiaszint csökkentése
- Felfelé görgetés: hierarchiaszint növelése
- Forgatás: A megjelenített eredményt elforgatja
OLAP kocka tárolása:
- ROLAP: Relációs
- MOLAP: Saját, multidimenziós
- HOLAP: Hibrid
Előkalkuláció mértéke: Ne legyen túl nagy, se túl kicsi
-- sashee - 2009.06.02.
Entity Framework
EDM (Entity Data Modell):
- Conceptual Schema Definition Language (CSDL)
- Store Schema Definition Language (SSDL)
- Mapping Specification Language (MSL)
- Működés
- ObjectContext
- Adattár -> Store Providers -> Entity Provider -> Object Services
Lekérdezési lehetőségek:
- Entity SQL + Object Services
- Ha LINQ-nél nagyobb kifejezőerőre van szükség
- Ha dinamikusan összeállított lekérdezésekre van szükség
- Ha a teljesítmény nagyon fontos
- Entity SQL + Entity Client
- Az adatokat sorban (streamelve) szeretnénk lekérdezni
- Meglévő alkalmazások átírásakor
- LINQ to Entities
- Minden más esetben
ORM leképezési lehetőségek EF-ben:
- TPH (Table Per Hierarchy)
- Minden osztály egy táblába
- EDM designer támogatja
- TPT (Table Per Type)
- Minden osztály külön táblába (az absztraktak is)
- EDM designer támogatja
- TPC (Table Per Class)
- Minden valós osztály külön táblába (az absztraktak nem)
- EDM designer nem támogatja
Egyéb szolgáltatások:
- Komplex típusok használata
- DefiningQuery
- Lazy loading
- Tárolt eljárások hívása
Asszociáció típusok:
- Külső kulcsos asszociáció
- Független asszociácó
- A több-több kapcsolatat mindig ezzel valósítjuk meg
- Mindig van navigation property
Változáskövetés:
- Eredeményhalmazok összefűzése
- NoTracking
- AppendOnly
- OverwriteChanges
- PreserveChanges
- EntityState
- Detached
- Unchanged
- Added
- Deleted
- Modified
- Entitás típusok
- Entity object leszármazott
- Automatikus változáskövetés
- Lazy loading támogatás
- Hátránya, hogy nem tudunk csak az EntityObjectből származtatni
- POCO
- Nincs automatikus változáskövetés, a DetectChanges metódust kell hívni
- Nincs lazy loading támogatás
- POCO proxy
- Automatikus változáskövetés
- Lazy loading támogatás
- Futási időben leszármaztat az osztályunkból, így tudja biztosítani a fenti szolgáltatásokat, ezért speciális követelmények vonatkoznak a POCO osztályunkra
- Self-Tracking Entities
- nem függ az EF-től
- Tulajdonképpen ez egy csináld magad megoldás, ugyanazt implementáljuk, mint amit az EF tud
- Entity object leszármazott
- SaveChanges
Két és többrétegű alkalmazások:
- Kétrétegű
- Az entitások nem hagyják el az OC alkalmazástartományát (nincs sorosítás)
- Az állapotkezelést az OC megoldja ha a funkciók kompaktak (például egy dialógus ablak)
- Többrétegű alkalmazás
- Az entitás kikerül az OC alkalmazástartományából
- Az állapotkövetés nem bízható az OC-ra
- A változásokat az OC tudomására kell hozni
-- KoviBalu - 2011.06.04.