<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cz%C3%A9m%C3%A1n+Arnold</id>
	<title>VIK Wiki - Felhasználó közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cz%C3%A9m%C3%A1n+Arnold"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Cz%C3%A9m%C3%A1n_Arnold"/>
	<updated>2026-04-12T14:36:12Z</updated>
	<subtitle>Felhasználó közreműködései</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Informatikai_technol%C3%B3gi%C3%A1k_laborat%C3%B3rium_1_-_AUT_2._m%C3%A9r%C3%A9s:_Entity_Framework&amp;diff=185743</id>
		<title>Informatikai technológiák laboratórium 1 - AUT 2. mérés: Entity Framework</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Informatikai_technol%C3%B3gi%C3%A1k_laborat%C3%B3rium_1_-_AUT_2._m%C3%A9r%C3%A9s:_Entity_Framework&amp;diff=185743"/>
		<updated>2015-05-18T11:35:17Z</updated>

		<summary type="html">&lt;p&gt;Czémán Arnold: /* 3.  Mit jelent a &amp;amp;#8222;lazy loading&amp;amp;#8221;, melyen szerepet kap az Entity Frameworkben? (2p.) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{vissza|Informatikai technológiák laboratórium 1}}&lt;br /&gt;
&lt;br /&gt;
==Hasznos linkek==&lt;br /&gt;
Informatikai technológiák laboratórium 1. AUT-os tárgyoldala:&lt;br /&gt;
&lt;br /&gt;
http://www.aut.bme.hu/Portal/Targy.aspx?courseId=3d7b71f0-ca1b-48f4-adfd-cffeb4e26031&lt;br /&gt;
&lt;br /&gt;
Adatvezérelt alkalmazások fejlesztése tárgyoldal&lt;br /&gt;
&lt;br /&gt;
http://www.aut.bme.hu/Portal/aaf&lt;br /&gt;
&lt;br /&gt;
==1.  Sorold fel az Entity Framework három leképzési rétegét! (2p.) ==&lt;br /&gt;
* Conceptual Model&lt;br /&gt;
* Map&lt;br /&gt;
* Storage/Logical Model&lt;br /&gt;
&lt;br /&gt;
Leíró nyelveik sorrendben:&lt;br /&gt;
* Conceptual Schema Definition Language (CSDL)&lt;br /&gt;
* Mapping Specification Language (MSL)&lt;br /&gt;
* Store Schema Definition Language (SSDL)&lt;br /&gt;
&lt;br /&gt;
==2.  Milyen lehetőségek vannak Entity Frameworkben egy osztály adattáblákra való leképzésére? (2p.) ==&lt;br /&gt;
* Egy hierarchia egy táblába | Table per Hierarchy (TPH)&lt;br /&gt;
* Minden típus saját táblába | Table per Type (TPT)&lt;br /&gt;
* Minden valós osztály saját táblába | Table per Concrete Type (EDM Designer nem támogatja)&lt;br /&gt;
&lt;br /&gt;
==3.  Mit jelent a &amp;amp;#8222;lazy loading&amp;amp;#8221;, milyen szerepet kap az Entity Frameworkben? (2p.) ==&lt;br /&gt;
Lazy loading esetén csak akkor töltjük be az objektumot amikor valóban szükség van rá. EF-ben az entitások betöltése lehet explicit (IsLoaded, Load, tehát kezdeményezni kell) vagy implicit (automatikusan történik navigation propertyk mentén). &lt;br /&gt;
&lt;br /&gt;
Másik lehetőség az Eager loading, ami a kért navigációs propertykhez tartozó entitásokat is automatikusan &lt;br /&gt;
betölti.&lt;br /&gt;
&lt;br /&gt;
==4.  Az Entity Framework 3 alapvető módszert kínál az entitások elérésére. Melyek ezek? (2p.)==&lt;br /&gt;
* LINQ to Entities&lt;br /&gt;
* Entity SQL with Entity Client&lt;br /&gt;
* Entity SQL with Object Services&lt;br /&gt;
&lt;br /&gt;
==5.  Miért jelentenek nehézséget az ORM rendszerek szempontjából a 3, vagy többrétegű alkalmazások a hagyományos 2 rétegű alkalmazásokkal szemben? (2p.) ==&lt;br /&gt;
Mert az entitás kikerül az ObjectContext alkalmazástartományából és így az állapotkövetés nem bízható rá. A változásokat explicit kell az OC tudomására hozni. A kliensnek minden adatot szolgáltatnia kell a módosításokhoz. -&amp;gt; ez itt most EF specifikus, diáról, X&lt;br /&gt;
&lt;br /&gt;
==6.  Milyen problémára és hogyan ad választ a &amp;amp;#8222;self-tracking entity&amp;amp;#8221; megoldás az Entity Frameworkben? (2p.)==&lt;br /&gt;
*Diák alapján*: Többrétegű alkalmazások esetén az állapotkövetést nem bízhatjuk az ObjectContextre, ezért nem használhatjuk az alapértelmezett EntityObject-et. A &amp;quot;self-tracking-entity&amp;quot; programozási modellje azonos a hagyományos EF-fel, kiegészítve állapotinformációkkal.&lt;br /&gt;
&lt;br /&gt;
*Másképp*: n-tier alkalmazásoknál nincs közvetlen kapcsolat pl. a kliens (Silverlight alkalmazás) és a szerver, DB között. &lt;br /&gt;
Ezért valahogy meg kell oldani, hogy amit a kliens csinál változásokat, azokat a szervernek a tudtára kell adni. Így az STE az rögzíti a saját változásait és amikor a szerverhez visszaküldjük, akkor a szerver tudni fogja, hogy mi változot (egy változáslistát vezet az STE).&lt;br /&gt;
&lt;br /&gt;
Ha ez nem lenne, akkor a következő lehetőségeink lennének:&lt;br /&gt;
* a kliens által módosított egész objektumot újra beleírni az adatbázisba (mondjuk ez nem értem miért rossz megoldás annyira, de mindegy :D - azért, mert így akkor is írsz az adatbázisba, ha nem módosult az objektum)&lt;br /&gt;
* lekérni az objektum jelenlegi állapotát a DBből, majd összehasonlítani a kliens által módosítottal és a változásokat visszaírni (plusz egy lekérdezés)&lt;br /&gt;
&lt;br /&gt;
==7.  Milyen problémára és hogyan adnak választ a POCO és a POCO proxy osztályok az Entity Frameworkben? (4p.)==&lt;br /&gt;
*Diák alapján*: Többrétegű alkalmazások esetén az állapotkövetést nem bízhatjuk az ObjectContextre, ezért nem használhatjuk az alapértelmezett EntityObject-et.&lt;br /&gt;
&lt;br /&gt;
A POCO entitások változáskövetése nem automatikus és nincs lazy loading sem, csatoláskor az ObjectContext lekérdezi és tárolja tulajdonságainak értékeit. A DetectChanges metódus veti össze az az entitások eredeti és aktuális propertyjeit (és veszi fel az új entitásokat).&lt;br /&gt;
&lt;br /&gt;
A POCO Proxy entitások támogatják az automatikus változáskövetést és lazy loadingot, azonban ehhez az entitásoknak szigurú követelményeknek kell megfelelniük.&lt;br /&gt;
&lt;br /&gt;
* Általános:&lt;br /&gt;
** Publikus, nem absztrakt és nem sealed osztály&lt;br /&gt;
** Public/protected paraméter nélküli konstruktor&lt;br /&gt;
** Nem implementálhatja az IEntityWithChangeTracker és az IEntityWithRelationships interfészeket&lt;br /&gt;
* Késleltetett betöltéshez:&lt;br /&gt;
** Érintett tulajdonság (get): public, virtual, non sealed&lt;br /&gt;
* Változáskövetéshez:&lt;br /&gt;
** Érintett tulajdonság (get, set): public, virtual, non sealed&lt;br /&gt;
** Relációknál a * oldalat ICollection&amp;lt;T&amp;gt; reprezentálja&lt;br /&gt;
** OC CreateObject függvényét használjuk new helyett&lt;br /&gt;
&lt;br /&gt;
*Másképp*: POCO (Plain Old CLR Object) azért jó, mert a már meglévő osztályt tudod használni. Az elég nagy undorító dolog lehet, hogy minden osztályod az EntityObject-ből származik le és ez megkötheti a kezed az öröklés során meg csak úgy általánosan agyfaszt kapsz tőle. Erre megoldás a POCO osztály, aminek te &lt;br /&gt;
örülhetsz, hogy az EF ilyet is tud.&lt;br /&gt;
&lt;br /&gt;
POCO proxy: futásidőben dinamikusan jönnek létre a proxy osztályok, amiknek a szülői az eredeti osztályok, de a propertyk overrideolva vannak, így minden lekérdezést elkapnak, amit el kell és akkor pl. a Navigation propertyre hivatkozáskor be tudják tölteni azt Lazy Loading.&lt;br /&gt;
&lt;br /&gt;
Így a kecske is jól lakik (POCO osztályokat látunk továbbra is, csak igazából egy gyereküket használjuk), meg a káposzta is megmarad (működik pár funkció, amivel eddig kézzel kellett volna szopni: lazy loading, változás követés).&lt;br /&gt;
&lt;br /&gt;
==Felelősség==&lt;br /&gt;
Természetesen nem vállalunk : )&lt;br /&gt;
&lt;br /&gt;
=AUT 2. mérés RÉGI (Linq + WPF)=&lt;br /&gt;
&lt;br /&gt;
==Hasznos linkek==&lt;br /&gt;
Informatikai technológiák laboratórium 1. AUT-os tárgyoldala:&lt;br /&gt;
&lt;br /&gt;
http://www.aut.bme.hu/Portal/Targy.aspx?courseId=3d7b71f0-ca1b-48f4-adfd-cffeb4e26031&lt;br /&gt;
&lt;br /&gt;
Adatvezérelt alkalmazások fejlesztése tárgyoldal&lt;br /&gt;
&lt;br /&gt;
http://www.aut.bme.hu/Portal/aaf&lt;br /&gt;
&lt;br /&gt;
==1. Mi a különbség a Visual és Logical Tree között?==&lt;br /&gt;
*Logical Tree*: A felépített ablak vezérlőinek hierarchiája&lt;br /&gt;
*Visual Tree*: Csomópontok helyett elemei megjelenítő objektumok vannak (pl ListBox -&amp;gt; Scrollbar, Border)&lt;br /&gt;
&lt;br /&gt;
==2. Mit nevezünk stílusnak?==&lt;br /&gt;
Olyan objektum amelyben meghatározható, hogy egy adott célvezérlő melyik property-jeit milyen értékre állítsa át. Egységesítésre használjuk.&lt;br /&gt;
&lt;br /&gt;
==3. Milyen módon alkalmazhatunk stílusokat?==&lt;br /&gt;
Logikai erőforrásként definináljuk őket, majd a kívánt vezérlőben a &#039;&#039;&#039;Style&#039;&#039;&#039; propertyvel hivatkozunk rájuk.&lt;br /&gt;
&lt;br /&gt;
==4. Mire valók a Control Templatek?==&lt;br /&gt;
A Control Visual Treejét lehet megváltoztatni.&lt;br /&gt;
&lt;br /&gt;
==5. Mi a különbség a bináris és a logikai erőforrások között?==&lt;br /&gt;
*Bináris erőforrás*: A hagyományos értelemben vett erőforrás (pl. kép, hang)&lt;br /&gt;
*Logikai erőforrás*: Példányosított objektumok (pl: Style, ControlTemplate), amelyek globálisan elérhetőek. &lt;br /&gt;
&lt;br /&gt;
==6. Mit nevezünk adatkötésnek?==&lt;br /&gt;
Kér property összekötése. (forrás- és célobjektum) Függés alakul ki köztük. A célobjektum megadot properyje a forrásobjektum megadott propertyjének értékét fogja felvenni. DependencyProperty-k esetén változáskövetés is van.&lt;br /&gt;
&lt;br /&gt;
==7. Milyen módokon hivatkozhatunk a forrásobjektumra adatkötésben? (XAML)==&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;TextBlock Text=&amp;quot;{Binding ElementName=treeView,Path=SelectedItem.Header}&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- [[PallosTamas|Velias]] - 2009.02.22. &amp;lt;BR&amp;gt;&lt;br /&gt;
-- [[FlamichTamas]] - 2009.04.19. &amp;lt;BR&amp;gt;&lt;br /&gt;
-- [[ZsolnaiKaroly|keeroy]] - 2010.05.10. &amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoszak]]&lt;/div&gt;</summary>
		<author><name>Czémán Arnold</name></author>
	</entry>
</feed>