2010-09-06 6 views
1

Je migre de SubSonic vers EF4. Dans les modèles SubSonic avait une fonction appelée Enregistrer, si la clé du modèle était 0 un insert a été fait, sinon une mise à jour.Entity Framework 4 mise à jour et insertion d'une fonction

Existe-t-il un moyen de créer une fonction Save générique comme dans SubSonic? Pour exmaple en utilisant une méthode d'extension?

Répondre

8

Oui, mais vous devez le faire vous-même. Essayez quelque chose comme ceci:

public interface IEntity 
{ 
    int Id { get; set; } 
} 

... 

public void SaveOrUpdate<T>(T entity) where T : IEntity 
{ 
    using (var context = new MyContext()) 
    { 
    if (entity.Id == 0) 
    { 
     context.AddObject(entity); 
    } 
    else 
    { 
     context.Attach(entity); 
     context.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified); 
    } 

    context.SaveChanges(); 
    } 
} 
0

Je pense un peu meilleure version sera saveOrUpdate public static void (cette entité T) où T: IEntity

Questions connexes