問題タブ [esent]
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.
esent - マネージドEsentラッパーでEsentをどのように使用する必要がありますか?
例に従って、Usingステートメントを使用してインスタンスを開き、セッションを作成し、データベースに接続して開き、トランザクションを開いてレコードを保存するなどの操作を実行してみました。しかし、このパターンを各操作に使用すると。保存などの各操作には約0.5秒かかります。だから私はこれを間違っていると思います。しかし、私はこれをどのように行うべきかわかりません。
インスタンスは1つだけにする必要がありますか?名前が違う場合はもっと欲しいですか?
複数のスレッドがある場合、もっと多く持つことができますか?
複数のセッションを同時に開くことができるようですが、それは問題ないと思いますが、すべてのセッションをアタッチする必要がありますか?セッションごとにデータベースを開く必要がありますか?これらのさまざまなシナリオをテストすると、一貫性のない結果が得られます。テストに合格することもあれば、破棄されたオブジェクトを使用しようとしたり、EsentTempPathInUseExceptionなどの例外が発生したりすることもあります。
それで、これをどのように使用すべきかについてのガイダンスはありますか?
windows-8 - EsentがWindows8でクラッシュする
私は自分のプロジェクトにESENTを非常に広範囲に使用しており、ESENTがいかに簡単かつ高速に機能するかを本当に気に入っています。そして安定も!!
しかし、私はWindows8で大きな問題を抱えています!!! JetSetSystemParameter以外の何かを呼び出すたびに、esent.dllに(動的または静的に)リンクする方法に関係なく、dllがクラッシュし、崖に沿ってアプリをタキグします。
イベントビューアから次のように通知されます。例外コード:0xc0000090エラーオフセット:0x0003090e esent ver:6.2.8400.0
誰かがWindows8で同様の問題に遭遇しましたか?
c#-4.0 - オブジェクトを Esent 永続ディクショナリに格納すると、次のようになります: Not supported for SetColumn パラメータ エラー
IInterface などのインターフェイスを実装するオブジェクトを保存しようとしています。
多くのクラスが同じインターフェイスを実装しているため (すべてキャッシュする必要があります)、一般的なアプローチとして、IInterface 型のオブジェクトをディクショナリに格納します。
そのため、そのオブジェクト型を引き出して IInterface としてキャストし、そのオブジェクトのメソッドの内部実装などを使用できます。
しかし、Esent キャッシュが初期化されるとすぐに、次のエラーがスローされます:
SetColumn
パラメータ名: TColumn
実際の値は IInterface でした。
同じことを行うために使用XmlSerializer
しないようにしましたが、インターフェイス タイプを逆シリアル化できません。また、インターフェイスの上で[Serializable]
属性を使用できないため、行き詰まっています。
また、インターフェイスのすべての実装 (クラス) を[Serializable]
死にかけた試みとして作成しようとしましたが、役に立ちませんでした。
誰でも抜け道を知っていますか?前もって感謝します !!!
delphi - DelphiプロジェクトでWindows8を使用するとEsentがクラッシュする
私は自分のプロジェクトにESENTを非常に広範囲に使用しており、ESENTがいかに簡単かつ高速に機能するかを本当に気に入っています。そして安定も!!
しかし、私はWindows8で大きな問題を抱えています!!! JetSetSystemParameter以外の何かを呼び出すたびに、esent.dllに(動的または静的に)リンクする方法に関係なく、dllがクラッシュし、アプリを崖から下ろします。
残念ながら、まだ実行できません。私のコードは、Windows7以前で問題なく実行できました。しかし、Windows 8では、インスタンスを作成しようとするとesent.dllがクラッシュします(浮動小数点の無効な操作)。
考えられるすべての呼び出し規約を試しました。これは間違いなく問題ではありません。さらに試してみたところ、この奇妙な状況が見つかりました。1. VS 2012を使用してデモアプリケーションを作成しましたが、JetCreateInstanceは正常に機能しました。2. Delphi XE3のまったく同じコードは、esent.dllをクラッシュさせます。3. VS 2012を使用してDLLを作成し、Delphiのバグだと思って、上記のデモアプリで完全に機能するメソッドをエクスポートしました。4.次に、デモDelphiプロジェクトにDLLをロードしました(6、XE2、およびXE3で試してみました)。メソッドとBOOMを呼び出しました。同じクラッシュ。
今私の仮定は、Microsoftが許可しないということですか?!?esent.dllで正しく動作する他の開発者環境。これは可能ですか?
c# - WindowsフォームアプリケーションでEsentデータベースを使用中にEsentTooManyInstancesException
アプリケーションの実行中にメモリを解放するために、膨大なメモリ内リストの代わりに Esent データベースを使用しようとしています。しかし、作成中の ESENTDbWrapper ( Esent.Interop に対するカスタム ラッパー) のインスタンスが多数あるため、ある時点でEsentTooManyInstancesExceptionがスローされます。
それで、最大数は何ですか。初期化できる同時インスタンスの数? または、構成関連のものが不足していますか??? どんな種類の提案も大歓迎です。ありがとう。
c# - データベースが存在するかどうかを確認する
esent にデータベースが存在するかどうかを確認するにはどうすればよいですか?
と を使用Api.JetAttachDatabase
しApi.JetOpenDatabase
て既存のデータベースを開き、 を使用Api.JetCreateDatabase
して新しいデータベースを作成できます。しかし、DB が存在するかどうかを確認できる API が見つかりません。
Api.JetAttachDatabase
データベースが存在するかどうかを検出するために、本当に例外をキャッチする必要がありますか?
esent - ESENT -- ese データベース ファイルの読み取り
私が読んだファイルのページサイズは 32768 です。JET_paramDatabasePageSize を 32768 に設定すると、JetInit は -1213 を返します。次に、JET_paramRecovery を「オフ」に設定すると、JetInit は成功します。しかし、JetAttachDatabase を使用すると、-550 を返します。
これが私のコードです:
何が問題なのですか?私は Windows 7 32 ビットを実行しています。
esent - Esent のテーブルからすべての行を読み取る
私はesentを初めて使用します。いくつかのサンプルコードを調べたところ、キーに基づいて行を読み取ることがわかりました。特定のテーブルからすべての行を読み取る方法は何ですか。SQLで行うように
「テーブル名から*を選択」
c# - マネージド ESENT: 複数のプロセスからアクセスするための読み取り専用としてディクショナリを開きます
複数のプロセスが同時にデータを読み取れるように、永続的な辞書を読み取り専用モードで開くにはどうすればよいですか?
esent - コミット/ロールバックの実行時に ESENT レコードはディスクにフラッシュされますか?
私はManagedEsentインターフェイスを使用していくつかのテストを行っていますが、ここの誰かがこれについて明確にできるかどうか疑問に思っています:
- トランザクション内で更新(レコードの挿入)を行い、トランザクションをロールバックします
EseDatabaseViewを使用してデータベースを見ると、「コミットされていない」レコードがテーブルにリストされていることがわかります。esent.dllに再度アクセスしても、記録が得られません。
したがって、esent API を使用すると、レコードはコミットされません (そして表示されません)。EDVを使用すると(ファイルから直接読み取ると思います)、レコードがそこにあります。
これは「通常の」動作ですか、ESENTは「常に」ファイルにレコードを書き込みますか?コミットされていない場合、それは読み取られませんか? それを示すEDVのバグですか?それとも私はここで何かが欠けていますか?