Генерация тестовых данных в Raven DB

Я ищу предпочтительный и удобный способ генерации тестовых данных в Raven DB. В настоящее время у нашей команды есть способ сделать это с помощью кода .NET. Приведен пример.

Тем не менее, я ищу разные варианты. Поделись, пожалуйста.

public void Execute()
        {
            using (var documentStore = new DocumentStore { ConnectionStringName = "RavenDb" })
            {
                documentStore.Conventions.DefaultQueryingConsistency = ConsistencyOptions.QueryYourWrites;

                // Override the default key prefix generation strategy of Pascal case to lower case.
                documentStore.Conventions.FindTypeTagName = type => DocumentConvention.DefaultTypeTagName(type).ToLower();

                documentStore.Initialize();

                InitializeData(documentStore);
            }
        }

Изменить: Raven-overflow действительно полезен. Спасибо, что указали на нужное место.


person Yusubov    schedule 19.06.2012    source источник


Ответы (1)


Попробуйте проверить RavenOverflow. Там у меня есть проект FakeData с поддельными данные (как жестко закодированные, так и сгенерированные случайным образом). Затем это можно использовать либо в моем проекте Tests, либо в проекте Основной сайт :)

Вот пример кода...

if (isDataToBeSeeded)
{
    HelperUtilities.CreateSeedData(documentStore);
}

....

public static void CreateSeedData(IDocumentStore documentStore)
{
    Condition.Requires(documentStore).IsNotNull();

    using (IDocumentSession documentSession = documentStore.OpenSession())
    {
        // First, check to make sure we don't have any data.
        var user = documentSession.Load<User>(1);
        if (user != null)
        {
            // ooOooo! we have a user, so it's assumed we actually have some seeded data.
            return;
        }

        // We have no users, so it's assumed we therefore have no data at all.
        // So lets fake some up :)

        // Users.
        ICollection<User> users = FakeUsers.CreateFakeUsers(50);
        StoreFakeEntities(users, documentSession);

        // Questions.
        ICollection<Question> questions = FakeQuestions.CreateFakeQuestions(users.Select(x => x.Id).ToList());
        StoreFakeEntities(questions, documentSession);

        documentSession.SaveChanges();

        // Make sure all our indexes are not stale.
        documentStore.WaitForStaleIndexesToComplete();
    }
}

....

public static ICollection<Question> CreateFakeQuestions(IList<string> userIds, int numberOfFakeQuestions)
{
.... u get the idea .....
}

Надеюсь это поможет.

person Pure.Krome    schedule 19.06.2012