ObjectContext.SaveChanges Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Conserve toutes les mises à jour de la source de données.
Surcharges
| Nom | Description |
|---|---|
| SaveChanges() |
Conserve toutes les mises à jour de la source de données et réinitialise le suivi des modifications dans le contexte de l’objet. |
| SaveChanges(Boolean) |
Obsolète.
Conserve toutes les mises à jour de la source de données et réinitialise éventuellement le suivi des modifications dans le contexte de l’objet. |
| SaveChanges(SaveOptions) |
Conserve toutes les mises à jour de la source de données avec le fichier spécifié SaveOptions. |
SaveChanges()
Conserve toutes les mises à jour de la source de données et réinitialise le suivi des modifications dans le contexte de l’objet.
public:
int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
Retours
Nombre d’objets dans un état ou ModifiedDeleted un Addedétat lors SaveChanges() de l’appel.
Exceptions
Une violation d’accès concurrentiel optimiste s’est produite dans la source de données.
Exemples
Cet exemple tente d’enregistrer les modifications, ce qui peut entraîner un conflit d’accès concurrentiel. Ensuite, il montre comment résoudre le conflit d’accès concurrentiel en actualisant le contexte de l’objet avant de réinscrire les modifications.
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
// Perform an operation with a high-level of concurrency.
// Change the status of all orders without an approval code.
ObjectQuery<SalesOrderHeader> orders =
context.SalesOrderHeaders.Where(
"it.CreditCardApprovalCode IS NULL").Top("100");
foreach (SalesOrderHeader order in orders)
{
// Reset the order status to 4 = Rejected.
order.Status = 4;
}
try
{
// Try to save changes, which may cause a conflict.
int num = context.SaveChanges();
Console.WriteLine("No conflicts. " +
num.ToString() + " updates saved.");
}
catch (OptimisticConcurrencyException)
{
// Resolve the concurrency conflict by refreshing the
// object context before re-saving changes.
context.Refresh(RefreshMode.ClientWins, orders);
// Save changes.
context.SaveChanges();
Console.WriteLine("OptimisticConcurrencyException "
+ "handled and changes saved");
}
foreach (SalesOrderHeader order in orders)
{
Console.WriteLine("Order ID: " + order.SalesOrderID.ToString()
+ " Order status: " + order.Status.ToString());
}
}
catch (UpdateException ex)
{
Console.WriteLine(ex.ToString());
}
}
Remarques
Pour vous assurer que les objets sur le client ont été mis à jour par la logique côté source de données, vous pouvez appeler la méthode avec la RefreshStoreWins valeur après l’appel SaveChanges.
SaveChanges opère dans une transaction. SaveChanges restaure cette transaction et lève une exception si l’un des objets sales ObjectStateEntry ne peut pas être conservé.
Si une violation d’accès concurrentiel optimiste s’est produite, une OptimisticConcurrencyException violation est levée. Vous pouvez résoudre une violation d’accès concurrentiel optimiste en l’interceptant, en appelant la méthode avec la ou ClientWins la RefreshStoreWins valeur, puis en appelant SaveChanges à nouveau.
Voir aussi
S’applique à
SaveChanges(Boolean)
Attention
Use SaveChanges(SaveOptions options) instead.
Conserve toutes les mises à jour de la source de données et réinitialise éventuellement le suivi des modifications dans le contexte de l’objet.
public:
int SaveChanges(bool acceptChangesDuringSave);
public int SaveChanges(bool acceptChangesDuringSave);
[System.ComponentModel.Browsable(false)]
[System.Obsolete("Use SaveChanges(SaveOptions options) instead.")]
public int SaveChanges(bool acceptChangesDuringSave);
member this.SaveChanges : bool -> int
[<System.ComponentModel.Browsable(false)>]
[<System.Obsolete("Use SaveChanges(SaveOptions options) instead.")>]
member this.SaveChanges : bool -> int
Public Function SaveChanges (acceptChangesDuringSave As Boolean) As Integer
Paramètres
- acceptChangesDuringSave
- Boolean
Ce paramètre est nécessaire pour la prise en charge des transactions côté client. Si true, le suivi des modifications sur tous les objets est réinitialisé une fois SaveChanges(Boolean) terminé. Si false, vous devez appeler la AcceptAllChanges() méthode après SaveChanges(Boolean).
Retours
Nombre d’objets dans un état ou ModifiedDeleted un Addedétat lors SaveChanges() de l’appel.
- Attributs
Exceptions
Une violation d’accès concurrentiel optimiste s’est produite.
Remarques
Appelez la méthode à la SaveChanges(SaveOptions) place.
S’applique à
SaveChanges(SaveOptions)
Conserve toutes les mises à jour de la source de données avec le fichier spécifié SaveOptions.
public:
virtual int SaveChanges(System::Data::Objects::SaveOptions options);
public virtual int SaveChanges(System.Data.Objects.SaveOptions options);
abstract member SaveChanges : System.Data.Objects.SaveOptions -> int
override this.SaveChanges : System.Data.Objects.SaveOptions -> int
Public Overridable Function SaveChanges (options As SaveOptions) As Integer
Paramètres
- options
- SaveOptions
Valeur SaveOptions qui détermine le comportement de l’opération.
Retours
Nombre d’objets dans un état ou ModifiedDeleted un Addedétat lors SaveChanges() de l’appel.
Exceptions
Une violation d’accès concurrentiel optimiste s’est produite.
Remarques
Utilisez cette surcharge spécifique pour SaveChanges vous assurer qu’elle DetectChanges est appelée avant d’enregistrer les modifications apportées à la source de données ou qui AcceptAllChanges est appelée après avoir enregistré les modifications apportées à la source de données.
Cette énumération a une FlagsAttribute fonction qui permet une combinaison au niveau du bit de ses valeurs membres.
Pour vous assurer que les objets sur le client ont été mis à jour par la logique côté source de données, vous pouvez appeler la Refresh méthode avec la StoreWins valeur après l’appel SaveChanges. La SaveChanges méthode fonctionne dans une transaction. SaveChanges restaure cette transaction et lève une exception si l’un des objets sales ObjectStateEntry ne peut pas être conservé.
Si une violation d’accès concurrentiel optimiste s’est produite, une OptimisticConcurrencyException violation est levée. Vous pouvez résoudre une violation d’accès concurrentiel optimiste en l’interceptant, en appelant la Refresh méthode avec les valeurs ou ClientWins les StoreWins valeurs, puis en appelant à nouveau la SaveChanges méthode.