Voici le tableau
Utilisateurs
et le code...
Voici le tableau
Utilisateurs
et le code...
Vous avez essentiellement deux options:
userId
fournis - l'ensemble de l'objet est chargépassword
champ.SaveChanges()
méthodeDans ce cas, c'est à EF comment gérer cela dans le détail. Je viens de tester cela, et dans le cas où je ne changer qu'un seul champ d'un objet, ce que EF crée est à peu près ce que vous souhaitez créer manuellement, trop quelque chose comme:
`UPDATE dbo.Users SET Password = @Password WHERE UserId = @UserId`
Si EF est assez intelligent pour comprendre ce que les colonnes ont en effet changé, et il va créer une instruction T-SQL pour gérer simplement les mises à jour qui sont en fait nécessaires.
Password
colonne pour l' UserId
et rien d'autre - exécute essentiellement UPDATE dbo.Users SET Password = @Password WHERE UserId = @UserId
) et de vous créer une fonction d'importation de cette procédure stockée dans votre modèle EF et vous appelez cette fonction au lieu de faire les étapes décrites ci-dessusJe suis en retard pour le jeu ici, mais c'est la façon dont je le fais, j'ai passé un certain temps à la chasse pour une solution que j'ai été satisfaits; cela produit un UPDATE
UNIQUEMENT pour les champs qui ont été modifiés, comme vous le définir explicitement ce qu'ils sont par le biais d'une "liste blanche", un concept qui est plus sûr pour éviter formulaire web d'injection de toute façon.
Un extrait de mon ISession référentiel de données:
public bool Update<T>(T item, params string[] changedPropertyNames) where T
: class, new()
{
_context.Set<T>().Attach(item);
foreach (var propertyName in changedPropertyNames)
{
// If we can't find the property, this line wil throw an exception,
//which is good as we want to know about it
_context.Entry(item).Property(propertyName).IsModified = true;
}
return true;
}
Ce pourrait être enveloppé dans un try..catch si vous le souhaite, mais personnellement, j'aime mon interlocuteur pour connaître les exceptions dans ce scénario.
Il serait appelé à quelque chose comme ce mode (pour moi, ce fut par l'intermédiaire d'un ASP.NET l'API Web):
if (!session.Update(franchiseViewModel.Franchise, new[]
{
"Name",
"StartDate"
}))
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
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.