Doel van EF 6.x DbContext Generator-optie bij het toevoegen van een nieuw gegevensitem in Visual Studio

Ik heb een web-app die ik heb gebouwd met LINQ to SQL en ik wil deze upgraden naar LINQ to Entity Framework. Ik heb wat tutorials bekeken en wat ik heb geleerd is dat je in principe in het database-first scenario een ADO.NET Entity Data Model maakt. En van daaruit selecteert u welke tabellen u in het model wilt opnemen (zeer vergelijkbaar met LINQ to SQL).

In het dialoogvenster Nieuw item toevoegenzie ik dat er een andere optie is die een EF 6.x DbContext Generatormaakt:

Visual Studio dialoogvenster Nieuw item toevoegen

Wat is het doel van EF 6.x DbContext Generatorvergeleken met ADO.NET Entity Data Model(eerste optie in dialoogvenster)? En waar dient EF 6.x DbContext Generatorvoor? Het lijkt een tekstbestand te maken. Wat moet ik ermee doen?


Antwoord 1, autoriteit 100%

De DbContext Generator vervangt de ObjectContext door veel eenvoudigere en kortere code om Entity-objecten te verbinden met database-objecten. Een enkele databasetabel met 30 velden wordt vertegenwoordigd door ongeveer 800 regels code als ObjectContext, maar ongeveer 40 regels gemakkelijk te begrijpen code als DbContext en klasse gegenereerd door de DbContextGenerator.

De DbContext Generator maakt twee bestanden –

  1. het maken van de DbContext met details van de verbindingsreeks en een DbSet voor elke tabel.

  2. het maken van de klasse die elke tabel vertegenwoordigt. Als u deze .tt-mappen opent, ziet u de gegenereerde DbContext en klassen. U hoeft niets met deze klassen te doen – u verwijst ernaar in de Controller-acties.

Een overzicht is beschikbaar op http://msdn.microsoft.com/en-US /data/jj206878


Antwoord 2, autoriteit 71%

Ik denk dat dit het essentiële artikel is met betrekking tot EntityFramework en generatoren:

MSDN-artikel

Hier is de inleiding van het artikel:

Als u een model maakt met de Entity Framework Designer, worden uw klassen en afgeleide context automatisch voor u gegenereerd. Naast de standaard codegeneratie bieden we ook een aantal sjablonen die kunnen worden gebruikt om de code die wordt gegenereerd aan te passen. Deze sjablonen worden geleverd als T4-tekstsjablonen, zodat u de sjablonen indien nodig kunt aanpassen.

Over het algemeen deze generatoren zetten uw db-module niet omvan LinqToSQL naar EntityFramework.
Als je een volledige database hebt (stel dat je het als een module hebt op basis van Linq2SQL) raad ik je aan om ADO.NET Entity Data Model te gebruiken (nieuw item toevoegen: EDMX) en ‘Genereren uit database’ te kiezen (VS Wizard na toevoeging) .


Antwoord 3, autoriteit 53%

Als u al een database heeft, is de eerste optie beter, aangezien de aanpak erg lijkt op degene waarmee u al in LinqToSQL werkt.
Het .EDMX-bestand kan u ook een grafische visualisatie van uw database bieden, en u hoeft zich nergens anders zorgen over te maken.


Antwoord 4, autoriteit 35%

Er zijn twee manieren om eerst DB te doen, de ene omvat een EDMX-bestand, de andere omvat reverse engineering om de eerste POCO’s te coderen.

Als je een EDMX-bestand hebt, installeer je generatoren die worden gebruikt om je entiteiten te genereren, en er zijn verschillende opties. De ene is DbContext, de andere is de EntityObject-generator, die objecten genereert op basis van ObjectContext.


Antwoord 5, autoriteit 18%

De eerste optie maakt een Model-First-bestand om met EF (alle versies) te werken. Als u ervoor kiest dat u uw EF-model kunt bijwerken (of samenstellen) vanuit een bestaande database, krijgt u als u de tweede optie kiest, faciliteiten om corresponderende bestanden te genereren om een ​​oplossing te bouwen voor het werken met Code-First EF.

Volgens mijn ervaringen is de tweede keuze geen waardige optie en als u besluit om met Code-First EF te werken, wordt het ten zeerste aanbevolen om een schoon bestand te openen en uw codes zelf vrij te schrijven en te genieten van maximale flexibiliteit die wordt geboden door Code-First en hun conventies.

Other episodes