Raven DB - автоматическое создание собственного ключа - PullRequest
5 голосов
/ 07 января 2012

В настоящее время у меня есть объект, который имеет публичное свойство с именем Id. Когда я сохраняю объект, я бы хотел, чтобы идентификатор был частью данных, а не стал идентификатором документа, как это делается в настоящее время. При создании хранилища документов я устанавливаю только строку подключения.

using (var session = documentStore.OpenSession())
{
    session.Store(a);
    session.SaveChanges();
}


a can be thought of an object as:
public class A
{
    public Guid Id { get; set; }
    //other properties
}

Так что я либо хочу, чтобы он генерировал случайный Id, либо чтобы данные и documentId были свойством Id класса A.

EDIT:

Итак, две возможности: 1. Идентификатор документа = Id и

Data Section contains:
{
    data //sorry if the notation is not correct, doing it off of memory
    {
        Id: [my guid] 
        //other properities
    }
}

Или данные, содержащие Id и ID документа = случайным образом сгенерированные raven

1 Ответ

8 голосов
/ 07 января 2012

Вы можете использовать это, если хотите, чтобы Id было свойством, которым вы управляете самостоятельно, и вместо него использовало другое свойство в качестве идентификатора документа:

public class User
{
    public string DocumentId { get; set; }
    public Guid Id { get; set; }
    public string Name { get; set; }

    public User()
    {
        Id = Guid.NewGuid();
    }
}

documentStore.Conventions.FindIdentityProperty = prop =>
{
    if (prop.DeclaringType == typeof(User))
        return prop.Name == "DocumentId";

    return prop.Name == "Id";
};
...