Vytvoření modelu
Model EF ukládá podrobnosti o tom, jak se třídy a vlastnosti aplikace mapují na databázové tabulky a sloupce. Vytvořit model EF lze dvěma hlavními způsoby:
Pomocí Code First: Vývojář napíše kód, kterým model specifikuje. EF generuje modely a mapování za běhu na základě tříd entit a další konfigurace modelu specifikované vývojářem.
Pomocí EF Designeru: Vývojář nakreslí v EF Designeru pole a čáry, kterými model specifikuje. Výsledný model se uloží jako XML do souboru s příponou EDMX. Doménové objekty aplikace se obvykle generují automaticky z konceptuálního modelu.
Pracovní postupy EF
Oba tyto přístupy lze použít k cílení na stávající databázi nebo vytvoření nové databáze, z čehož vyplývají čtyři různé pracovní postupy. Podívejte se, který z nich vám vyhovuje nejvíce:
Chci jen psát kód... | Chci použít jen Designer... | |
---|---|---|
Vytvářím novou databázi | Pomocí přístupu Code First definujte model v kódu a vygenerujte databázi. | Pomocí přístupu Model First definujte model pomocí polí a čar a vygenerujte databázi. |
Potřebuji získat přístup ke stávající databázi | Pomocí přístupu Code First vytvořte model založený na kódu, který se namapuje na stávající databázi. | Pomocí přístupu Database First vytvořte model s poli a čarami, který se namapuje na stávající databázi. |
Podívejte se na video: Jaký pracovní postup EF mám použít?
V tomto krátkém videu jsou vysvětleny rozdíly mezi jednotlivými přístupy a způsob, jak si vybrat ten správný.
Autor: Rowan Miller
Pokud jste se podívali na video, ale pořád si nejste jistí, jestli použít EF Designer nebo Code First, seznamte se s oběma.
Pohled pod pokličku
Ať už používáte Code First nebo EF Designer, model EF má vždy několik součástí:
Objekty domény aplikace nebo samotné typy entit. Často se označují jako vrstva objektu
Konceptuální model sestávající z typů entit a relací specifických pro danou doménu, který je popsán pomocí modelu EDM (Entity Data Model). Tato vrstva se často označuje písmenem „C“ (jako conceptual).
Model úložiště představující tabulky, sloupce a relace definované v databázi. Tato vrstva se často označuje písmenem „S“ (jako storage).
Mapování mezi konceptuálním modelem a schématem databáze. Toto mapování se často označuje jako mapování C-S.
Mapovací modul EF využívá mapování C-S k transformaci operací s entitami (jako je vytváření, čtení, aktualizace a odstraňování) na ekvivalentní operace s tabulkami v databázi.
Mapování mezi konceptuálním modelem a objekty aplikace se často označuje jako mapování O-C. V porovnání s mapováním C-S funguje mapování O-C implicitně a způsobem „jeden na jednoho“: entity, vlastnosti a relace definované v konceptuálním modelu musí odpovídat tvarům a typům objektů .NET. Počínaje verzí EF4 mohou vrstvu objektů tvořit jednoduché objekty s vlastnostmi bez jakýchkoli závislostí na EF. Obvykle se označují jako POCO (Plain-Old CLR Objects) a mapování typů a vlastností se provádí na základě konvencí shody názvů. Starší verze EF 3.5 obsahovala specifická omezení pro vrstvu objektů – například entity musely být odvozeny ze třídy EntityObject a pro implementaci mapování O-C musely mít atributy EF.