2011-12-12 2 views
1

À partir d'un diagramme d'entités EF 4 et en utilisant des modèles T4, on peut créer des classes POCO qui peuvent être utilisées dans le modèle de domaine. Le code généré ressemble à ceci:Ajout de code à Entity Framework 4 généré POCOs

public partial class Product 
{ 
    public virtual int Id 
    { 
     get; 
     set; 
    } 

    public virtual string Name 
    { 
     get; 
     set; 
    } 
    //and so on 
} 

Y a-t-il une approche élégante pour ajouter mon propre code pour implémenter les propriétés? Par exemple, le Setter Name que je voudrais être implémenté en abaissant tous les caractères. Je voudrais que mon code résiste à la régénération répétée des classes POCO à partir du diagramme EF.

Cette exigence est quelque peu similaire à l'ajout de code de validation aux classes POCO. Ce problème est déjà résolu en créant une classe de validation distincte et en l'associant au POCO via l'attribut MetadataType. Cette classe de validation séparée n'est pas écrasée par une régénération répétée des POCO à partir du diagramme EF.

Merci,

Lucian

Répondre

1

Non, il n'y a aucun moyen facile de le faire. Vous ne devez pas toucher au code généré car vos modifications seront supprimées après chaque régénération. Vous options:

  • écriture d'entités vous et ne pas utiliser le générateur - vous obtiendrez le plein contrôle sur le code de l'entité
  • Modifier modèle T4 dans le générateur soit ajouter votre code directement (ce qui peut être très difficile de généraliser) ou simplement ajouter un appel à des méthodes partielles (vous devez aussi déclarer ces méthodes dans le générateur) dans getter et setter et dans votre partie partielle de la classe d'entité implémenter des méthodes partielles dont vous avez besoin.
+0

Les méthodes partielles ... les oublient presque. Ils pourraient être l'approche. Merci! – lmsasu

Questions connexes