ObjectContext.SaveChanges Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Alle updates voor de gegevensbron blijven behouden.
Overloads
| Name | Description |
|---|---|
| SaveChanges() |
Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen opnieuw instellen in de objectcontext. |
| SaveChanges(Boolean) |
Verouderd.
Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen in de objectcontext optioneel opnieuw instellen. |
| SaveChanges(SaveOptions) |
Bewaart alle updates voor de gegevensbron met de opgegeven SaveOptions. |
SaveChanges()
Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen opnieuw instellen in de objectcontext.
public:
int SaveChanges();
public int SaveChanges();
member this.SaveChanges : unit -> int
Public Function SaveChanges () As Integer
Retouren
Het aantal objecten in een Added, Modifiedof Deleted status wanneer SaveChanges() deze is aangeroepen.
Uitzonderingen
Er is een optimistische gelijktijdigheidsfout opgetreden in de gegevensbron.
Voorbeelden
In dit voorbeeld wordt geprobeerd wijzigingen op te slaan, wat een gelijktijdigheidsconflict kan veroorzaken. Vervolgens wordt gedemonstreerd hoe u het gelijktijdigheidsconflict kunt oplossen door de objectcontext te vernieuwen voordat u wijzigingen opnieuw opslaat.
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());
}
}
Opmerkingen
Om ervoor te zorgen dat objecten op de client zijn bijgewerkt door logica aan de gegevensbronzijde, kunt u de Refresh methode aanroepen met de StoreWins waarde nadat u het aanroept SaveChanges. Zie Wijzigingen opslaan en Gelijktijdigheid beheren voor meer informatie.
SaveChanges werkt binnen een transactie. SaveChanges zal die transactie terugdraaien en een uitzondering genereren als een van de vuile ObjectStateEntry objecten niet kan worden bewaard.
Als er een optimistische gelijktijdigheidsschending is opgetreden, wordt er een OptimisticConcurrencyException gegenereerd. U kunt een optimistische gelijktijdigheidsschending oplossen door deze te vangen, de Refresh methode aan te roepen met de StoreWins of ClientWins waarde en vervolgens opnieuw aan te roepen SaveChanges . Zie Procedure: Gelijktijdigheid van gegevens beheren in de objectcontext voor meer informatie.
Zie ook
Van toepassing op
SaveChanges(Boolean)
Let op
Use SaveChanges(SaveOptions options) instead.
Alle updates voor de gegevensbron blijven behouden en het bijhouden van wijzigingen in de objectcontext optioneel opnieuw instellen.
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
Parameters
- acceptChangesDuringSave
- Boolean
Deze parameter is nodig voor transactieondersteuning aan de clientzijde. Als true, wordt het bijhouden van wijzigingen voor alle objecten opnieuw ingesteld nadat SaveChanges(Boolean) deze is voltooid. Als false, moet u de AcceptAllChanges() methode aanroepen na SaveChanges(Boolean).
Retouren
Het aantal objecten in een Added, Modifiedof Deleted status wanneer SaveChanges() deze is aangeroepen.
- Kenmerken
Uitzonderingen
Er is een optimistische gelijktijdigheidsfout opgetreden.
Opmerkingen
Roep in plaats daarvan de SaveChanges(SaveOptions) methode aan.
Van toepassing op
SaveChanges(SaveOptions)
Bewaart alle updates voor de gegevensbron met de opgegeven 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
Parameters
- options
- SaveOptions
Een SaveOptions waarde die het gedrag van de bewerking bepaalt.
Retouren
Het aantal objecten in een Added, Modifiedof Deleted status wanneer SaveChanges() deze is aangeroepen.
Uitzonderingen
Er is een optimistische gelijktijdigheidsfout opgetreden.
Opmerkingen
Gebruik deze specifieke overbelasting om SaveChanges ervoor te zorgen dat deze DetectChanges wordt aangeroepen voordat u wijzigingen in de gegevensbron opslaat of die AcceptAllChanges wordt aangeroepen nadat u wijzigingen in de gegevensbron hebt opgeslagen.
Deze opsomming heeft een FlagsAttribute opsomming die een bitwise combinatie van de ledenwaarden toestaat.
Om ervoor te zorgen dat objecten op de client zijn bijgewerkt door logica aan de gegevensbronzijde, kunt u de Refresh methode aanroepen met de StoreWins waarde nadat u het aanroept SaveChanges. De SaveChanges methode werkt in een transactie. SaveChanges zal die transactie terugdraaien en een uitzondering genereren als een van de vuile ObjectStateEntry objecten niet kan worden bewaard.
Als er een optimistische gelijktijdigheidsschending is opgetreden, wordt er een OptimisticConcurrencyException gegenereerd. U kunt een optimistische gelijktijdigheidsschending oplossen door deze te vangen, de Refresh methode aan te roepen met de StoreWins of ClientWins waarden en vervolgens de SaveChanges methode opnieuw aan te roepen. Zie Procedure: Gelijktijdigheid van gegevens beheren in de objectcontext voor meer informatie.