none
Update Entity Framework RRS feed

  • Question

  • Bonjour,

    Je fais face à problème avec Update dans Entity Framework.

    Voilà, j'ai les classes suivantes:

    public class Category {     [Key]     public Guid ID { getset; }     public string Title { getset; }     public virtual List<Product> Products { getset; } } public class Product {     [Key]     public Guid ID { getset; }     public string Title { getset; }     public string Details { getset; }     public double Price { getset; }     public string ImageFileName { getset; }     public DateTime DateAdded { getset; }     public virtualCategory Category { getset; } }

    public classMyDBContext: DbContext {     public DbSet<Product> Products { getset; }     public DbSet<Category> Categories { getset; }

    public void updateObject(Category currentCategory) {      Category catg=  Categories.Find(currentCategory);      this.Entry(catg).CurrentValues.SetValues(catg);      this.SaveChanges(); } }             

    Pour des besoins spécifiques, j''ai aussi une liste de Category en mémoire qui va servir à contenir les objets crées. Donc, quand j'ajoute une catégorie dans cette liste, (cette catégorie contient bien entendu une liste de produits), celle s'ajoute aussi dans la Db via le DbContext (SaveChanges()).

    Ma question est la suivante:

    Si pour ma catégorie courante que je viens de créer et qui existe dans la liste mémoire, je veux modifier son Title pour la mettre à jours, je fais ce qui suit:

    Je la récupère et je modifie son titre:

    currenCategory.Title = "Cat1";

    et puis je la passe à une méthode Update(currentCategory) pour mise à jour.

    La mise à jour se fait très bien aussi bien en mémoire qu'en BD.

    Cependant, si je change le contenu d'une des propriétés par exemple (Details ) d'un produit qui est lié à cette catégorie et que je passe cette catégorie à la méthode Update.

    En faisant ceci:

    currenCategory.Title = "Cat1";
    currenCategory.Products[1].Details = "Test";

    updateObject(currentCategory).

    Dans la DB, la mise à jour ne se fait pour la Category (currenCategory.Title) mais pas pour Product.

    Je n'arrive pas à trouver la solution.

    Merci d'avance.


    Beel

    vendredi 16 janvier 2015 11:00