如何在 ArangoDB 中创建组合键
How to create composite key at ArrangoDB
我在 C# 中使用了 ArangoDB.Client。
我正在创建资源 class 并将 ResourceId 和 Locale 作为复合键。
public class Resource
{
[Key, Column(Order = 1)]
public Guid ResourceId {get; set;}
[Key, Column(Order = 2)]
[MaxLength(5)]
public string Locale {get; set;}
public string ResourceName {get; set;}
}
以上 class 无效。我必须如下使用并要求结合 ResourceId 和 Locale 以保存为密钥。
public class Resource
{
[DocumentProperty(Identifier = IdentifierType.Key)]
public string Key { get; set; }
public Guid ResourceId {get; set;}
[MaxLength(5)]
public string Locale {get; set;}
public string ResourceName {get; set;}
}
有其他想法请多多指教!
ArangoDB 键只能设置在一个名为 _key
的属性上。使用 c# 客户端,您只能指定 class 成员中的哪一个应该转换为 _key
属性。
我自己没有这样做,但您可以连接 ResourceId
和 Locale
并将其设置为 Key
(请注意,密钥的长度最多应为 254 个字节)
public string Key => $"{ResourceId.ToString("N")}_{Locale}";
或者如果您希望这些字段对于每个文档都是唯一的,您可以在 ResourceId
和 Locale
上创建一个唯一的哈希索引,并将它们作为普通属性。
我在 C# 中使用了 ArangoDB.Client。 我正在创建资源 class 并将 ResourceId 和 Locale 作为复合键。
public class Resource
{
[Key, Column(Order = 1)]
public Guid ResourceId {get; set;}
[Key, Column(Order = 2)]
[MaxLength(5)]
public string Locale {get; set;}
public string ResourceName {get; set;}
}
以上 class 无效。我必须如下使用并要求结合 ResourceId 和 Locale 以保存为密钥。
public class Resource
{
[DocumentProperty(Identifier = IdentifierType.Key)]
public string Key { get; set; }
public Guid ResourceId {get; set;}
[MaxLength(5)]
public string Locale {get; set;}
public string ResourceName {get; set;}
}
有其他想法请多多指教!
ArangoDB 键只能设置在一个名为 _key
的属性上。使用 c# 客户端,您只能指定 class 成员中的哪一个应该转换为 _key
属性。
我自己没有这样做,但您可以连接 ResourceId
和 Locale
并将其设置为 Key
(请注意,密钥的长度最多应为 254 个字节)
public string Key => $"{ResourceId.ToString("N")}_{Locale}";
或者如果您希望这些字段对于每个文档都是唯一的,您可以在 ResourceId
和 Locale
上创建一个唯一的哈希索引,并将它们作为普通属性。