Skip to content

Instantly share code, notes, and snippets.

@AlexZeitler
Forked from benfoster/gist:3304337
Created August 11, 2012 10:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AlexZeitler/3323794 to your computer and use it in GitHub Desktop.
Save AlexZeitler/3323794 to your computer and use it in GitHub Desktop.
Performing one time migrations with RavenDB
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting migration.");
using (var store = new DocumentStore { ConnectionStringName = "RavenDb" }.Initialize())
{
using (var session = store.OpenSession())
{
var applications = session
.Query<VacancyApplication>()
.Include(a => a.VacancyId)
.As<RavenJObject>();
foreach (var application in applications)
{
var vacancy = session.Load<Vacancy>(application["VacancyId"].Value<string>());
if (vacancy == null)
throw new Exception();
// copy client id from vacancy
if (!application.ContainsKey("ClientId"))
{
application["ClientId"] = vacancy.ClientId;
}
// set reason for approving
if (!application.ContainsKey("ReasonForApproving"))
{
application["ReasonForApproving"] = application["ReasonForShortlisting"];
// transition anything that is shortlisted to approved
if (application["StateId"].Value<string>() == "Shortlisted")
{
application["StateId"] = "Approved";
}
}
}
session.SaveChanges();
}
}
Console.WriteLine("Migration complete.");
Console.ReadLine();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment