RavenDb或..中的只读键.RavenDb和Azure表存储之间的互操作性



我希望在RavenDb数据库中为客户托管许多配置参数,同时在Azure表存储中为这些参数每分钟生成许多数据点。我需要一个基本的方法来连接RavenDb和ATS。显然,这种连接是通过键来完成的。我的问题是RavenDb在其所有Id字段中使用正斜杠,而ATS在PartitionKey或RowKey中使用正斜杠时呕吐。

我的问题如下:是否有可能在我的RavenDb实体(没有设置)中有一个只读Id键。这种键方法将返回预先挂载"entity/"前缀的基于向导的键的值。这样,我就可以在raven实体中存储基于指南的ID键,并能够比较ravenEntity。RootId (guid)到storageEntity。PartitionKey(基于guid的字符串)。我担心,即使我的实体似乎持续到Raven并加载回OK..我可能对一些更模糊的功能有问题?

是否有其他建议或可行的方法来处理这种关系?

所以你只需要RavenDB模型中的一些东西,一旦创建就不会改变,你可以用它来关联你存储在Azure表存储中的相关数据?

好吧,假设您的RavenDB的文档id不会改变(它不能,因为它将是一个不同的文档),您可以使用使用文档id的确定性指南。

public class MyModel
{
    public string Id { get; set; }
    // Other stuff
    [JsonIgnore]      // <--- This really doesn't need to be persisted to RavenDB
    public string AzureLookupKey
    {
        get { return "entity/" + Utils.GetDeterministicGuid(this.Id).ToString("n"); }
    }
}

GetDeterministicGuid(inputString)方法可以按照你想要的方式实现,尽管SO问题如何创建确定性指南在问题中有一个很好的例子,在答案中有其他可能性。

除了使用[JsonIgnore]来防止RavenDB将数据序列化到数据库之外,您还可以使其成为一个方法。

相关内容

  • 没有找到相关文章

最新更新