問題タブ [realm-net]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - realm.xamarin がエラーをスローします: メソッド 'Contains' はサポートされていません。「任意」でも同じ
realm.xamarin linq クエリで「WHERE IN」のような句が必要なクエリを作成しています。以下は私が試したクエリです:
これも試してみましたContains
:
しかし、これはエラーをスローします:
これに対する解決策は何ですか?
編集 :
エラーのスタック トレースは次のとおりです。
未処理の例外: 06-07 15:04:55.097 I/MonoDroid(24526): System.NotSupportedException: メソッド 'Any' はサポートされていません 06-07 15:04:55.097 I/MonoDroid(24526): Realms.RealmResultsVisitor で。 VisitMethodCall (System.Linq.Expressions.MethodCallExpression m) [0x00596] in:0 06-07 15:04:55.097 I/MonoDroid(24526): Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000ec で] で:0 06-07 15:04:55.097 I/MonoDroid(24526): Realms.RealmResultsVisitor.VisitMethodCall (System.Linq.Expressions.MethodCallExpression m) [0x0006a] で:0 06-07 15:04:55.097 I /MonoDroid(24526): Realms.ExpressionVisitor.Visit (System.Linq.Expressions.Expression exp) [0x000ec] で:0 06-07 15:04:55.097 I/MonoDroid(24526): Realms.RealmResults で
1[T].CreateResultsHandle () [0x00037] in <filename unknown>:0 06-07 15:04:55.097 I/MonoDroid(24526): at Realms.RealmResults
1[T].get_ResultsHandle () [0x0000d] in :0 06-07 15:04:55.097 I/MonoDroid(24526): Realms.RealmResults1[T].GetEnumerator () [0x00000] in <filename unknown>:0 06-07 15:04:55.097 I/MonoDroid(24526): at System.Collections.Generic.List
1[T]..ctor (IEnumerable1 collection) [0x00073] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/collections/generic/list.cs:104 06-07 15:04:55.098 I/MonoDroid(24526): at System.Linq.Enumerable.ToList[TSource] (IEnumerable
1 source) [0x00011] in / Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/System.Core/System/Linq/Enumerable.cs:835 06-07 15:04:55.098 I/MonoDroid(24526): VHS で.MobileApp.Mediq.DataAccess.ObservationDatabase+<>c__DisplayClass13.b__8 () [0x00147] in d:\rwagh\mediq\Code\VHS.MobileApp.Mediq.DataAccess\ObservationDatabase.cs:65 06-07 15:04:55.098 I /MonoDroid(24526):1[TResult].InnerInvoke () [0x00012] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Future.cs:686 06-07 15:04:55.098 I/MonoDroid(24526): at System.Threading.Tasks.Task.Execute () [0x00016] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/threading/Tasks/Task.cs:2523 06-07 15:04:55.098 I/MonoDroid(24526): --- End of stack trace from previous location where exception was thrown --- 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00047] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:201 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142 06-07 15:04:55.098 I/MonoDroid(24526): at System.Runtime.CompilerServices.TaskAwaiter
/Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system の System.Threading.Tasks.Task 1[TResult].GetResult () [0x00000] で/runtime/compilerservices/TaskAwaiter.cs:372
編集2:
試してみました:https://github.com/realm/realm-dotnet/blob/7187390529201ba843cd105fc6e3e11acb0c6217/Realm.Shared/linq/RealmResultsVisitor.cs#L121によるとvar IdsToMatch = observations.Select(x => x.Id).AsQueryable()
、
しかし、それもうまくいきませんでした。
xamarin - Xamarin C# のレルムの文字列の長さ属性
EFStringLength
とその中SQLite.net
にMaxLength
はありますが、Realm に期待される文字列の長さを設定するための属性があるかどうかはわかりません。
誰がそれが何であるか知っていますか?
c# - RealmオブジェクトにNullableプロパティを実装する方法(より正確にはDateTime)?
このエラーを回避する方法について、質問は非常に簡単です。
Fody/RealmWeaver: クラス 'X' フィールド 'Y' は、まだサポートされていない 'System.Nullable`1' です。
これはDateTime?
プロパティ用です。Null 許容プリミティブ型は実際にサポートされています。
Java バージョンが値をサポートしていることは知っていnull
ます。これは Realm .NET に関するものです。古いことを行う以外に他の方法があるかどうか疑問に思っていましDateTime SomeNullableProperty
たbool HasSomeNullableProperty
。
c# - Realm での並列読み取りと書き込みの一貫性のない結果
多分私は何かを見逃しているかもしれませんが、同じオブジェクトであるレルムから並行して読み書きしているときに、奇妙な結果が得られます。
これは、より大きなプロジェクトで最初に発生しましたが、テスト プロジェクトで再現することができました。
シナリオ: 2 つのフィールドRealmObject
を持つ 1 つのオブジェクトDateTimeOffset
が作成され、毎分更新されます。別のスレッドが 10 秒ごとに読み取り、値を出力します。
最も関連性が高いため、最初に出力を表示します。括弧内の時刻は、出力がログに記録された時刻です。残りは識別子 (READER/WRITER) で、次にRealmObject
.
何が起こるかというと、書き込みが成功した後、リーダーはしばらく古い値を読み取り、次に新しい値を読み取り、古い値を再度読み取ります。アプリを再起動すると、もちろん、しばらくの間はすべて問題ありません。
//リーダーが読み取りを開始します。出力は正しい
[0:] (10:05:44.656) リーダー: [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+ 00:00","IsManaged":true}] [0:] (10:05:54.656) リーダー: [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate" :"2016-07-17T22:09:45.384+00:00","IsManaged":true}] [0:] (10:06:04.657) リーダー: [{"LastSyncTime":"2016-07-17T22: 04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+00:00","IsManaged":true}]
//Writer が入り、値を更新します。
[0:] (10:06:07.523) ライター: {"LastSyncTime":"2016-07-17T22:06:07.521+00:00","LastChangeDate":"2016-07-17T22:11:07.523+00 :00","IsManaged":true}
//Reader はしばらくの間、正しくない (OLD) 値を読み取ります
[0:] (10:06:14.661) リーダー: > [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384 +00:00","IsManaged":true}] [0:] (10:06:24.678) リーダー: [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate ":"2016-07-17T22:09:45.384+00:00","IsManaged":true}] [0:] (10:06:34.678) リーダー: [{"LastSyncTime":"2016-07-17T22 :04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+00:00","IsManaged":true}]
//リーダーは突然正しい値を読み取ります
[0:] (10:06:44.678) リーダー: [{"LastSyncTime":"2016-07-17T22:06:07.521+00:00","LastChangeDate":"2016-07-17T22:11:07.523+ 00:00","IsManaged":true}]
//リーダーは以前の値に戻ります (????)
[0:] (10:06:54.678) リーダー: [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate":"2016-07-17T22:09:45.384+ 00:00","IsManaged":true}] [0:] (10:07:04.678) リーダー: [{"LastSyncTime":"2016-07-17T22:04:45.384+00:00","LastChangeDate" :"2016-07-17T22:09:45.384+00:00","IsManaged":true}]
コード:
書き込み部分:
読者:
何が起こるかわからない。おそらく、レルムの何人かがこれを明確にすることができます.
アップデート
さらにいくつかのテストを行ったところ、リーダーとライターが同じ場合、すべて正常に動作するようThread
です。タイムスタンプの直後にマネージド スレッド ID をログに追加しました。したがって、以下では、スレッド 11 で実行されているリーダー (ライターと同じ) が正常に動作する様子を確認できます。しかし、別のスレッドで実行されているリーダーは古い値を出力します。
//アップデート前(正解)
[0:] (10:56:53.679,11) リーダー: [{"LastSyncTime":"2016-07-17T22:55:55.573+00:00","LastChangeDate":"2016-07-17T23:00: 55.576+00:00","IsManaged":true}]
//更新はスレッド 11 で行われます
[0:] (10:56:55.552,11) ライター: {"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01:55.553 +00:00","IsManaged":true}
//スレッド 11 のリーダーは正しい値を出力します
[0:] (10:57:03.702,11) リーダー: [{"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01: 55.553+00:00","IsManaged":true}]
// 繰り返しますが、リーダーはスレッド 11 にあります。出力を修正してください。
[0:] (10:57:13.702,11) リーダー: [{"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01: 55.553+00:00","IsManaged":true}]
//スレッド 12 のリーダーが誤った結果を出力する
[0:] (10:57:23.703,12) リーダー: [{"LastSyncTime":"2016-07-17T22:23:19.674+00:00","LastChangeDate":"2016-07-17T22:28: 19.676+00:00","IsManaged":true}]
// 繰り返しますが、リーダーはスレッド 11 にあります。出力を修正してください。
[0:] (10:57:33.703,11) リーダー: [{"LastSyncTime":"2016-07-17T22:56:55.552+00:00","LastChangeDate":"2016-07-17T23:01: 55.553+00:00","IsManaged":true}]
.net - Realm for Xamarin での簡単な移行
Realm for Xamarin のドキュメントには次のように書かれています。
Realm は、クラスの追加と削除、またはクラスからのプロパティの追加と削除など、処理なしで実行できる移行を自動的に実行します。より複雑な変更については、適切な移行が必要です。このための API はまだありませんが、計画されており、まもなく追加される予定です。
ただし、モデルに新しいフィールドを追加しただけでも、必要な移行のためにアプリがクラッシュします。
私の質問は、自動的に実行される移行をどのように利用できますか?
java - Windows サーバーから Realm.io データベースを生成する方法はありますか?
Windows サーバーから Realm.io データベースを生成したいと考えています。私の目的は、(Web サービス経由で) ダウンロードして、モバイル デバイス (iOS) から読むことです。
では、コンソール アプリケーションを介して Windows サーバーから Realm.io データベースを生成する方法はありますか?
Xamarin Studio とコンソール アプリケーション プロジェクトでこれを実行しようとしましたが、PC プラットフォームがまだサポートされていないように見えるため、System.PlatformNotSupportedException が発生しました ( https://github.com/realm/realm-dotnet/issues/509 )。
Javaでもそれをやろうと思ったのですが、Realm.ioは「現時点ではAndroid以外のJavaをサポートしていないようです」(https://realm.io/docs/java/latest/)。
Xamarin または Java で私がやりたいことを行うためのトリックはありますか?
他の方法はありますか?
xamarin - Realm net: リンクされたコレクションの代替による並べ替え
リンクされたコレクション プロパティを持つレルム オブジェクト Item があります。
そして、リンクされた Properties コレクションのプロパティで Item エンティティに並べ替える必要があります。このようなもの (Realm でサポートされていないことはわかっています):
プロパティを Item エンティティに移動することはできません。これは、さまざまなアイテムにさまざまなプロパティ セットが含まれている可能性があり、時間の経過とともに変化する可能性があるためです。この種の並べ替えを実装する他のオプションはありますか? 今のところ、メモリ内のオブジェクトを並べ替えるオプションのみが表示されますが、大きなデータセットではメモリが多すぎる場合があります。
c# - RealmでLinq式を使用してNullable型でnullをチェックする方法は?
Modified プロパティが設定されていないすべての要素を取得したいのですが、Realm で動作させることができないようです。
サンプルコード:
常に取得System.NotSupportedException: The rhs of the binary operator 'Equal' should be a constant or closure variable expression.
またはSystem.NotSupportedException: The member 'HasValue' is not supported
何か見逃しましたか?Realm の Linq が実際にサポートしているものを確認する良い方法はありますか?
Android での Realm Xamarin v0.77.1 の使用
編集:
コメンターが提案したように、linq式ツリーを作成してみました。これにより、System.MissingMethodException: Method 'RealmResults'1.get_Provider' not found.
例外が発生しました。
c# - Xamarin の Realm で「取得または作成」クエリを実装する方法は?
単純なモデルを考えてみましょう:
Session
ID でインスタンスを取得する方法、またはインスタンスnull
が存在しない場合は?
では、どのように設計されているのでしょうか?