2 votes

Quel est l'équivalent Entity Framework de SQL UPDATE ?

J'ai cherché partout sur Internet et je n'ai toujours pas trouvé de solution à ce problème.

J'ai essayé la méthode de l'attachement :

    public static void updatePhoto(string name, string albumName, string newName, string newPath)
    {
        //updates photo... no delete and adding...
        var photo = new Image(){Label=newName, Path = newPath};
        using (var db = new EzPrintsEntities())
        {
            db.Images.Attach(photo);
            db.SaveChanges();
        }

    }

mais cela n'a rien donné du tout.

La question est donc de savoir comment implémenter un UPDATE dans la base de données sql via EF dans le code ci-dessous ?

    public static void updatePhoto(string name, string albumName, string newName, string newPath)
    {
         EzPrintsEntities db = new EzPrintsEntities();

    }

5voto

Reed Copsey Points 315315

Si vous mettez à jour une photo existante, vous devez la charger et modifier la valeur existante :

public static void updatePhoto(string name, string albumName, string newName, string newPath)
{
    using (var db = new EzPrintsEntities())
    {
        // Load photo
        var photo = db.Images.FirstOrDefault(i => i.Label == name && i.Album == albumName);
        if (photo == null)
        {
           // no matching photo - do something
        }

        // Update data
        photo.Label = newName;
        photo.Path = newPath; 

        db.SaveChanges();
    }

}

0voto

JSK NS Points 1805

La méthode la plus simple serait :

public static void updatePhoto(string name, string albumName, string newName, string newPath)   
{   
    //updates photo... no delete and adding...       

    using (var db = new EzPrintsEntities())   
    {   
        var photo = (from p in db.Images
                 where p.name == name &&
                 p.albumname == albumName 
                 select p).First();
        photo.name = newName;
        photo.path = newPath;
        db.SaveChanges();   
    }   

}   

Il vous suffit de sélectionner le photo en utilisant Linq, le modifier, et SaveChanges()

0voto

Gromer Points 6234

Ce que vous voulez faire, c'est aussi passer à votre updatePhoto la(les) valeur(s) de la clé primaire de votre Image entité. Ensuite, au lieu de créer une nouvelle Image et en l'attachant et en sauvegardant le contexte, vous obtiendrez l'entité Image de votre contexte, et mettez simplement à jour les propriétés de cette entité.

Quelque chose comme ça :

using (var db = new EzPrintsEntities())
{
    var image = db.Images.SingleOrDefault(i => i.Id == id); // Assuming Id is the PK on Image, and we sent in the PK in a variable called id.
    if (image != null)
    {
        image.Label = newName;
        image.Path = newPath;

        db.SaveChanges();
    }
    else
    {
        // Invalid PK value sent in, do something here (logging, error display, whatever).
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X