Entity Framework
Database eerste modelgeneratie
Zoeken…
Model genereren uit database
Ga in Visual Studio
naar uw Solution Explorer
en klik vervolgens op Project
U voegt een model Rechter muis toe . Kies ADO.NET Entity Data Model
Kies vervolgens Generate from database
en klik op Next
in het volgende venster, klik op New Connection...
en wijs naar de database waaruit u het model wilt genereren (dit kan MSSQL
, MySQL
of Oracle
)
Nadat u dit hebt gedaan, klikt u op Test Connection
om te zien of u de verbinding correct hebt geconfigureerd (ga niet verder als het hier niet lukt).
Klik op Next
en kies vervolgens de gewenste opties (zoals stijl voor het genereren van entiteitsnamen of om buitenlandse sleutels toe te voegen).
Klik nogmaals op Next
, op dit moment zou het model uit de database moeten zijn gegenereerd.
Gegevensaantekeningen toevoegen aan het gegenereerde model
In de T4-code-generatiestrategie die wordt gebruikt door Entity Framework 5 en hoger, worden gegevensattributen niet standaard opgenomen. Om gegevensaantekeningen bovenop bepaalde eigenschappen bij elke modelregeneratie op te nemen, opent u het sjabloonbestand dat bij EDMX (met .tt
extensie) zit en voegt using
vervolgens een using
onder de methode UsingDirectives
zoals hieronder:
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>
(itemCollection))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(code);
#>
<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
using System.ComponentModel.DataAnnotations; // --> add this line
Stel bijvoorbeeld dat de sjabloon KeyAttribute
moet bevatten dat een primaire sleuteleigenschap aangeeft. Als u KeyAttribute
automatisch wilt invoegen tijdens het regenereren van het model, zoekt u een deel van de code met codeStringGenerator.Property
zoals hieronder:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Voer vervolgens een if-voorwaarde in om de sleuteleigenschap als volgt te controleren:
var simpleProperties = typeMapper.GetSimpleProperties(entity);
if (simpleProperties.Any())
{
foreach (var edmProperty in simpleProperties)
{
if (ef.IsKey(edmProperty)) {
#> [Key]
<# }
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
}
Door bovenstaande wijzigingen toe te passen, hebben alle gegenereerde KeyAttribute
op hun primaire sleuteleigenschap na het bijwerken van het model vanuit de database.
Voordat
using System;
public class Example
{
public int Id { get; set; }
public string Name { get; set; }
}
Na
using System;
using System.ComponentModel.DataAnnotations;
public class Example
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}