我在C#中使用了ArangoDB.Client。 我正在创建一个资源类,并将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;}
}
以上课程不起作用。我必须使用如下,并要求将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;}
}
请建议任何其他想法!
答案 0 :(得分:1)
ArangoDB密钥只能在名为_key
的一个属性上设置。使用c#客户端,您只能指定哪个类成员应转换为_key
属性。
我自己没有这样做,但你可以联合ResourceId
和Locale
并将其设置为Key
(只要知道密钥长度最多为254个字节)< / p>
public string Key => $"{ResourceId.ToString("N")}_{Locale}";
或者,如果您希望这些字段对于每个文档都是唯一的,则可以在ResourceId
和Locale
上创建唯一的哈希索引,并将它们视为普通属性。