2013-01-16 7 views
2

Dans ma base de données il y a 5 champs à la fin de chaque tableau:Génériques et Entity Framework

  • État
  • CreatedDate
  • CreatedBy
  • ModifiedDate
  • ModifiedBy

J'utilise le framework d'entité pour générer les objets POCO pour la base de données. J'ai une couche Dal pour gérer toutes les opérations CRUD.

Il est difficile de constamment copier et coller le même code pour remplir les 5 champs. Je me demande si quelqu'un a une méthode générique capable de gérer n'importe quel objet entité et de remplir les champs pour moi.

Répondre

2

Vous devez implémenter une classe de base commune possédant ces propriétés et dériver vos classes POCO de cette classe de base.

Vous pouvez gérer automatiquement les paramètres tels que Create/ModifiedDate et User en remplaçant SaveChanges() dans votre classe de contexte. Cela libère les consommateurs d'objets de la nécessité de définir ces propriétés partout où les classes sont consommées.

Voici un exemple de ce genre de code à partir d'un de mes projets (dans mon cas, les objets qui ont une propriété LastModified mettre en œuvre une interface IHasLastModified):

public override int SaveChanges() 
    { 
     DateTime now = DateTime.UtcNow; 
     foreach (ObjectStateEntry entry in (this as IObjectContextAdapter).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)) 
     { 
      if (!entry.IsRelationship) 
      { 
       IHasLastModified lastModified = entry.Entity as IHasLastModified; 
       if (lastModified != null) 
        lastModified.LastModified = now; 
      } 
     } 

     int changes = base.SaveChanges(); 
     return changes; 
    } 
+0

C'est fantastique et une excellente idée. Il y a le petit problème d'obtenir des objets POCO créés automatiquement pour hériter de la classe de base. Bien que je puisse modifier le fichier .tt pour ajouter cet héritage, pouvez-vous partager comment vous le feriez? –

+0

Je ne génère pas automatiquement mes POCO. Généralement, vous pouvez modifier les fichiers de modèle .tt. Quel générateur utilisez-vous? –

+0

Entity Framework –