

下記のように、クラス(テーブル)に設定する複数のプロパティ(項目)に対して、PrimaryKeyや、Indexedの属性を付けることは可能でしょうか。可能でしたら構文を教えていただけると幸いです。  
ご教授の程、よろしくお願いいたします。

※code1、code2に対してPrimaryKeyを付け、code3、code4に対してIndexedを付けるイメージとなります。

[code]

    class MasterTable : RealmObject
    {
         [PrimaryKey]
        public int code1 { get; set; }
        public string code2 { get; set; }
    
        [Indexed]
        public string code3 { get; set; }
        public string code4 { get; set; }
    
        public string firstname { get; set; }
    
    }
    
[/code]


CC BY-SA 4.0
2020-08-07T07:51:43.793
69330
2020-08-07T09:32:50.033
41399
question
realm
realm 複数のプロパティ(項目)にPrimaryKey、Indexedの属性は可能でしょうか？


PrimaryKeyは１種類のオブジェクトにつき１つだけしか指定できません。

Indexedは複数のプロパティに指定できます。

例でいうと、

[code]

    class MasterTable : RealmObject
    {
         [PrimaryKey]
        public int code1 { get; set; }
        public string code2 { get; set; }
    
        [Indexed]
        public string code3 { get; set; }
        [Indexed]
        public string code4 { get; set; }
    
        public string firstname { get; set; }
    
    }
    
[/code]

のように書けばいいです。

もし複数のプロパティでプライマリキーを表現したいなら、例えば`code1`と`code2`を連結したプロパティを作成して（自分で`code1`と`code2`を連結した値が入るように実装する）、そのプロパティをプライマリキーとして指定する、という方法があります。


CC BY-SA 4.0
2020-08-07T09:32:50.033
69336
2020-08-07T09:32:50.033
5519
69330
answer