0

d'abord, j'essayais seulement de mettre à jour un modèle modifié. Disons, nous parlons de "Article" comme un modèle. La méthode suivante est mis en œuvre dans une classe appelée « Articles »:Enregistrer une entité nouvelle/modifiée respectivement dans Entity Framework

public static void SaveArticle(Article article) 
    { 
     if (article.Id == 0) 
     { 
      webEntities.Articles.Add(article); 
     } 
     else 
     { 
      webEntities.Articles.Attach(article); 
      webEntities.Entry(article).State = EntityState.Modified; 
     } 

     webEntities.SaveChanges(); 
    } 

Alors chaque fois que je veux sauver un article modifié dans une action de contrôleur, je dois juste appeler « Articles.SaveArticle (myArticle); », qui fonctionne comme prévu.
Jusqu'ici tout va bien, mais cela signifie que j'aurais besoin d'implémenter ceci de manière redondante pour chaque modèle/entité. Ensuite, j'ai pensé à quelque chose comme un modèle-modèle. C'est à dire. une classe appelée "Entity" où "Article" hérite de "Entity".
En outre, une classe appelée « entités » contient une méthode statique comme ceci:

public static void SaveEntity(Entity entity) 
    { 
     if (Entity.Id == 0) // <-- Problem 1 
     { 
      webEntities.Entities.Add(entity); // <-- Problem 2 
     } 
     else 
     { 
      webEntities.Entities.Attach(entity); // <-- Problem 3 
      webEntities.Entry(entity).State = EntityState.Modified; // <-- Problem 4 
     } 

     webEntities.SaveChanges(); 
    } 

donc je ne voudrais pas besoin de le mettre en œuvre, mais je ne redondante sais pas comment résoudre les problèmes mentionnés dans le code ci-dessus. Est-ce que je pense trop compliqué ou ce qui serait une bonne pratique à mon problème?

Merci d'avance! Sincères salutations

+0

Utilisez-vous la structure d'entité 4 ou 5? –

+0

Il est dit Version 4.4.0.0 et Runtime Version v4.0.30319 –

+0

Utilisez-vous 'DbContext' ou' ObjectCOntext'? –

Répondre

1

Utiliser des génériques.

public static void Save<T>(T entity) 
    where T : class 
{ 
    webEntities.Set<T>().AddOrUpdate(entity); 
    webEntities.SaveChanges(); 
} 

AddOrUpdate est une méthode d'extension dans System.Data.Entity.Migrations.

+0

Parfait, merci :) Je me demandais d'abord pourquoi AddOrUpdate n'était pas connu mais cela fonctionnait après avoir ajouté "System.Data.Entity.Migrations" manuellement (il n'a pas été suggéré par le compilateur) –

Questions connexes