Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
RavenDB Extension Method to generate an ID without storing the document
public static string GenerateIdFor<T>(this IDocumentSession session)
// We need the advanced session in order to ensure that the keys are generated in the correct database.
// session.Advanced.DocumentStore.DatabaseCommands is not sufficient.
var advancedSession = session.Advanced as DocumentSession;
if (advancedSession == null)
throw new InvalidOperationException();
// An entity instance is required to generate a key, but we only have a type.
// In our case, the entities don't have public constructors so we must use reflection.
var entity = Activator.CreateInstance(typeof(T), true);
// Generate an ID using the commands and conventions from the current session
return advancedSession.Conventions.GenerateDocumentKey(advancedSession.DatabaseCommands, entity);
mj1856 commented Oct 2, 2012

Usage: var id = session.GenerateIdFor();

mj1856 commented Oct 2, 2012

Let's try that again (what, can't delete/edit a gist comment?)

Usage: var id = session.GenerateIdFor();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment