問題タブ [coolstorage]
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.
orm - CoolStorage は 1 対 1 の関係を設定できません
問題は、最初のオブジェクトが 2 番目のオブジェクトにリンクし、2 番目のオブジェクトが最初のオブジェクトにリンクするように、2 つのオブジェクト間の OneToOne 関係を作成する方法を理解できないことです。コードは次のとおりです。
問題は、製品とモデルを作成し、モデルのプロパティ「製品」を作成したものに設定して保存すると、製品の「モデル」プロパティが設定されず、NULL のままになることです。製品とモデルの両方のプロパティのすべてのローカル キーと外部キーを同じにすることを既に試みましたが (例: "ModelID")、問題は解決しませんでした。これを行う正しい方法は何ですか?
それらの1つを作成する[OneToMany]
とうまくいくと思いますが、プロパティによって返される単一のオブジェクトが必要なときにコレクションを返します。
アップデート
松葉杖と呼ばれる簡単な解決策があります。
xamarin.ios - MonoTouch の Vici CoolStorage は UniqueIdentifier キーをサポートしていますか?
次のように宣言された sqlite テーブル:
Windows では Vici CoolStorage によって正しく読み取られますが、MonoTouch では次の例外がスローされます。
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Cannot cast from source type to destination type.
at Vici.CoolStorage.CSDataProviderSQLite.GetSchemaColumns (System.String tableName) [0x00000] in <filename unknown>:0
at Vici.CoolStorage.CSSchema.CreateColumns () [0x00000] in <filename unknown>:0
at Vici.CoolStorage.CSSchema..ctor (System.Type objType) [0x00000] in <filename unknown>:0
at Vici.CoolStorage.CSSchema.Get (System.Type objectType) [0x00000] in <filename unknown>:0
at Vici.CoolStorage.CSList``1[Store.CoolStorage.Note]..ctor () [0x00000] in <filename unknown>:0
型 ID に基づいて列のデータ型を検出するコードは、MonoTouch 用の Vici の CSDataProviderSqlite で UNIQUEIDENTIFIER 型を処理していないようです。
CSSqliteConnection.GetSchema から:
ここには UNIQUEIDENTIFIER のハンドラはありません。これは Vici CoolStorage のバグですか?
c# - 同じテーブルへの ManyToMany 関係
同じテーブル内のカテゴリ間の関係を追加しようとしています。私は
カテゴリー (ID INTEGER PRIMARY KEY AUTOINCREMENT、NAME TEXT)
テーブルと
CATEGORIES_CATEGORIES (ID INTEGER PRIMARY KEY AUTOINCREMENT、CATEGORIES_ID INTEGER NOT NULL、SUBCATEGORIES_ID INTEGER NOT NULL)
テーブル。
そして、それらを Vici Coolstorage ORM と一緒にマッピングしようとしています。クラスを作りました
カテゴリ クラス
CategoryCategory クラス
しかし、私はそれを機能させることはできません。この関係を機能させるのを手伝ってくれる人はいますか?
multithreading - Vicicoolstorage追加スレッド
私はiPhoneとAndroid用のモノタッチに関する比較的小さなプロジェクトを持っており、WP7を追加する予定です。私はvicicoolstorageをSQLiteのORMとして使用しており、問題なく動作しますが、1つの問題があります。dbを使用してスレッドごとに追加のスレッドを作成します。アプリケーションは超並列であるため、すでにスレッドの限界に達しており、変更したいと思います。スレッドの作成はCSConfig.csで実行され、異なるスレッドからGetDBを呼び出すたびに、新しいスレッドが作成されることがわかりました。
は_threadData
マークされてい[ThreadStatic]
ます。このGetDBは、ORMを使用するたびに呼び出されると思います(CSConfigのデフォルトDBを自分のDBに設定します)。スレッドはThreadData
コンストラクター内に作成されます。そして、スレッドはこの関数を実行します。
したがって、基本的には、呼び出し元が終了するのを待ってから、データベース接続を破棄します。
問題は、この動作をオーバーライドして、呼び出し元のスレッドが終了する前に、GCにデータベース接続を破棄させるか、Dispose()
自分自身を呼び出す方法です(DBを使用してすべてのスレッドを制御するので、それを実行できます)。スレッドが終了したときにORMに切断を処理させないのは良くないことは知っていますが、ワーカースレッドごとに1つの追加スレッドを使用することはできません。
c# - CoolStorageを使用してテーブル内のすべてのレコードを削除するには?
Windows Phone アプリケーションで SQLite データベースを操作するために Vici CoolStorage を使用しています。テーブル内のすべてのレコードを削除するには?
iphone - MonoTouch CoolStorage OneToMany キャッシュの問題
初めてリストを読み取るときに OneToMany 関係がキャッシュされ、後でデータが変更されたときにそのリストが更新されないという CoolStorage の問題が発生しています。
アプリを再起動すると、リストが正しいため、キャッシュの問題である必要があり、CoolStorage のドキュメントやどこにも解決策が見つかりません。
以下に単体テストコードを貼り付けました。
タイプ Person の Opponent を持つ Game クラスがあります。多くのゲームがあり、人物は多くのゲームの対戦相手になることができます。
私の Person クラスにはCSList
OpponentGames という名前があるので、いつでもその Person に対して「この人が対戦相手であるゲームを取得する」と言うことができます。
初めて「person.OpponentGames.Count」を参照する単体テストでは、ゲームが 1 つあることが正しくわかります。2 番目のゲームを作成し、対戦相手として自分の人を追加した後も、OpponentGames の 1 つのゲームが報告されます。
最初のカウントを削除すると、テストに合格するため、最初のチェック結果がキャッシュされ、そこから更新されません。
どんな提案でも大歓迎です!! ありがとう。
SQL (sqlite3)
セットアップ:
CoolStorage .Net クラス:
そして最後に、単体テスト:
.net - vici coolstorage CSList を使用した WPF Datagrid バインディングでキャスト エラーが発生する
CSList を WPF DataGrid の ItemsSource として使用しようとすると、エラーが発生します
タイプ 'System.Object[]' のオブジェクトをタイプ 'Product[]' にキャストできません
これをバインディング ソースとして使用できるかどうかは完全にはわかりませんが、ほとんど存在しない vici coolstorage のドキュメントによると、それらのコレクションはバインディングに適しているはずです。失敗しているように見える行は次のとおりです。
これが可能かどうか、また可能であれば、私が間違っていることを誰かに教えてもらえますか?
ありがとう!
[編集] これがスタック トレースです (わずかに変更されています)
many-to-many - ManyToMany の純粋な関係を保存する際の Vici coolstorage バグ?
エンティティ X と Y の間に多対多の関係を作成し、同じ関係を削除するテスト ケースがあります。
SQLite は、リレーションが存在するという制約違反をスローします。少し掘り下げた後、関係テーブルにはまだ関係のエントリがあることがわかりました。
これは、Vici CoolStorage 自体のバグである可能性があります。削除および追加されたオブジェクトを処理するコードは、次のようになります (CSListGeneric.cs 内)。
delete ステートメントが実行された後、削除されたオブジェクト コレクションは null に設定されることに注意してください。ただし、追加されたオブジェクト コレクションは同様にリセットされません。
一番下に行を追加すると、問題が解決するようです。
これは正しい修正ですか、それとも何か不足していますか?