Session: How to Get and Modify Entity Metadata
When a document is downloaded from the server, it contains various metadata information like ID or current change-vector. This information is stored in a session and is available for each entity using the GetMetadataFor
method from the Advanced
session operations.
Get the Metadata
IMetadataDictionary GetMetadataFor<T>(T instance);
Parameters | ||
---|---|---|
instance | T | Instance of an entity for which metadata will be returned. |
Return Value | |
---|---|
IMetadataDictionary | Returns the metadata for the specified entity. Throws an exception if the instance is not tracked by the session. |
Example
var employee = session.Load<Employee>("employees/1-A");
var metadata = session.Advanced.GetMetadataFor(employee);
Modify the Metadata
After getting the metadata from session.Advanced.GetMetadataFor
you can modify it just like any other dictionary.
Note
Keys in the metadata that starting with @ are reserved for RavenDB use
Example I
var user = new User
{
Name = "Idan"
};
session.Store(user);
var metadata = session.Advanced.GetMetadataFor(user);
metadata["Permissions"] = "ReadOnly";
session.SaveChanges();
Example II
var user = session.Load<User>("users/1-A");
var metadata = session.Advanced.GetMetadataFor(user);
metadata["Permissions"] = "ReadAndWrite";
session.SaveChanges();