Entity Framework
Première génération de base de données
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
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 ).
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; }
}

