Session: Deleting entities
Entities can be marked for deletion by using Delete
method, but will not be removed from server until SaveChanges
is called.
Syntax
void Delete<T>(T entity);
void Delete<T>(ValueType id);
void Delete(string id);
Parameters | ||
---|---|---|
entity or id | T, ValueType or string | instance of entity to delete or entity Id |
Example 1
// if UseOptimisticConcurrency is set to 'true' (default 'false')
// this 'Delete' method will use loaded 'employees/1' etag for concurrency check
// and might throw ConcurrencyException
Employee employee = session.Load<Employee>("employees/1");
session.Delete(employee);
session.SaveChanges();
Example 2
// this 'Delete' method will not do any Etag-based concurrency checks
// because Etag for 'employees/1' is unknown
session.Delete("employees/1");
session.SaveChanges();
Information
If entity is not tracked by session, then executing
session.Delete("employees/1");
is equal to doing
session.Advanced.Defer(new DeleteCommandData { Key = "employees/1" });
You can read more about defer operations here.