Raven DB - 让它自动生成自己的密钥

Bra*_*rad 5 .net c# ravendb

我目前有一个具有名为Id的公共属性的对象.当我存储对象时,我希望Id成为数据的一部分,而不是像目前那样成为文档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
}
Run Code Online (Sandbox Code Playgroud)

所以要么我希望它生成一个随机Id,要么让数据和documentId都是A类的Id属性.

编辑:

所以有两种可能:1.文件ID = Id和

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

或者包含Id和Document ID的数据=由raven随机生成

Dan*_*ang 8

如果你想Id成为一个你自己控制的属性并且乌鸦使用另一个属性作为文档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";
};
Run Code Online (Sandbox Code Playgroud)