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

voer hier de afbeeldingsbeschrijving in

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 )

voer hier de afbeeldingsbeschrijving in

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; }
}


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow