Created

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

RavenDB Extension Method to generate an ID without storing the document

View RavenExtensions.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
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);
}
Owner

Usage: var id = session.GenerateIdFor();

Owner

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

Usage: var id = session.GenerateIdFor<Foo>();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.