# Writing Changes

[Saving](/esave/scripting/saving-and-loading/data-management/saving.md), [Loading](/esave/scripting/saving-and-loading/data-management/loading.md), and [Deleting](/esave/scripting/saving-and-loading/data-management/deleting.md), only edit the save data in memory. The changes aren't officially saved until the `Save` method is called.

```csharp
saveFile.Save();
```

## Why Is It Like This?

There are 2 reasons as to why the data management methods don't automatically call `Save`:

1. The `Save` method writes data directly to a file on the user's system—a process that can be time-consuming, especially with large amounts of data. If `Save` was called automatically every time `AddOrUpdateData` or `DeleteData` was used, it would affect performance.
2. You can give players control over when their data is officially saved—for example, by letting them manually save through a dedicated save menu. This approach allows `AddOrUpdateData` and `DeleteData` to be used frequently during gameplay to modify player data while reserving `Save` for moments when the data needs to be officially written into the save file.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://espergames.gitbook.io/esave/scripting/saving-and-loading/data-management/writing-changes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
