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