2016-12-01 11 views
0

Я использовал ArangoDB.Client в C#. Я создаю класс ресурсов и делаю ResourceId и Locale в качестве составного ключа.Как создать составной ключ в ArrangoDB

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

'ResourceId' тип' Guid', который уже является уникальным, почему вы хотите совместить его с 'Locale'? –

ответ

1

Ключ ArangoDB можно установить только по одному атрибуту с именем _key. с клиентом C# вы можете указать, какой из членов класса должен быть переведен на атрибут _key.

Я не делал это сам, но вы можете Concat ResourceId и Locale и установить его на Key (просто надо знать, ключи должны быть не более 254 байт длиной)

public string Key => $"{ResourceId.ToString("N")}_{Locale}"; 

Или, если вы хотите, чтобы эти поля в быть уникальным для каждого документа, вы можете создать уникальный хеш-индекс на ResourceId и Locale и вести себя как обычные атрибуты.