Recherche…


Générer un modèle à partir d'une base de données

Dans Visual Studio accédez à votre Solution Explorer puis cliquez sur Project vous ajouterez le modèle Souris droite . Choisissez le ADO.NET Entity Data Model

entrer la description de l'image ici

Ensuite, choisissez Generate from database et cliquez sur Next dans la fenêtre suivante, cliquez sur New Connection... et pointez sur la base de données à partir de laquelle vous souhaitez générer le modèle (peut être MSSQL , MySQL ou Oracle ).

entrer la description de l'image ici

Après cela, cliquez sur Test Connection pour voir si vous avez configuré la connexion correctement (n'allez pas plus loin si elle échoue ici).

Cliquez sur Next puis choisissez les options souhaitées (comme le style pour générer des noms d'entité ou pour ajouter des clés étrangères).

Cliquez à nouveau sur Next , à ce stade, vous devriez avoir le modèle généré à partir de la base de données.

Ajout d'annotations de données au modèle généré

Dans la stratégie de génération de code T4 utilisée par Entity Framework 5 et versions ultérieures, les attributs d'annotation de données ne sont pas inclus par défaut. Pour inclure des annotations de données sur certaines propriétés de chaque régénération de modèle, ouvrez le fichier de modèle inclus avec EDMX (avec l'extension .tt ), puis ajoutez une instruction using sous la méthode UsingDirectives comme ci-dessous:

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

Par exemple, supposons que le modèle inclue KeyAttribute qui indique une propriété de clé primaire. Pour insérer KeyAttribute automatiquement lors de la régénération du modèle, recherchez une partie du code contenant codeStringGenerator.Property comme ci-dessous:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

Ensuite, insérez une condition if pour vérifier la propriété clé comme ceci:

var simpleProperties = typeMapper.GetSimpleProperties(entity);
    if (simpleProperties.Any())
    {
        foreach (var edmProperty in simpleProperties)
        {
             if (ef.IsKey(edmProperty)) { 
#>    [Key]
<#      } 
#>
    <#=codeStringGenerator.Property(edmProperty)#>
<#
        }
    }

En appliquant les modifications ci-dessus, toutes les classes de modèle générées auront KeyAttribute sur leur propriété de clé primaire après la mise à jour du modèle à partir de la base de données.

Avant

using System;

public class Example
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Après

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow