問題タブ [hilo]
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.
collections - NHibernate HiLoは、コレクション内のオブジェクトにIDを生成しません
NHibernateとHiLo戦略を使用していますが、問題は、コレクション内のオブジェクトのIDがSession.Save()で生成されないことです(Transaction.Commit()でのみ)。例えば:
これが私が持っているコードです:
マッピング:
nhibernate - NHibernate:SchemaExportを使用してデータベースを再作成
データベースの再作成を正しく処理することについて質問があります。
私の開発環境では、次を使用してデータベースを再作成することがよくあります。
(私はhiloジェネレーターを使用していることに注意する必要があります。)データベースを再作成した直後に、" Cannot insert duplicate key...
"例外のために新しいエンティティの保存が失敗することがあります。
私の質問:新しいhiloを使用するデータベースと正しく同期するには、セッションファクトリ(および場合によってはセッション)を再初期化する 必要がありますか?それともそのまま動作しますか?
ヒントは大歓迎です!
LG
ワラッパ
nhibernate - NHibernate、HiLo、および多対多の関連付け
RoleとPermissionの2 つのエンティティがあり、それぞれデータベースにテーブルがあり、HiLo アルゴリズムを使用して適切に ID 生成をセットアップしています。これはうまくいきます。ただし、データベースにはもう 1 つのテーブルROLE_PERMISSION_ASSIGNMENTがあり、前述の 2 つのテーブルへの外部キーが含まれているだけで、エンティティが結合されています。このテーブルには、アプリケーションに対応するエンティティがありません。
Roleエンティティのマッピングは次のようになります。
ROLE_PERMISSION_ASSIGNMENTテーブルのエンティティがないため、その ID を生成する方法を指定できません。そのため、Role (いくつかのPermissionsを含む) を DB に保存すると、 ROLE_PERMISSION_ASSIGNMENTに対応するエントリを作成するときに失敗します。主キーを提供しません。
HiLo アルゴリズムでもROLE_PERMISSION_ASSIGNMENTのID を生成するように NHibernate に指示する方法はありますか?
どうもありがとうございました。
nhibernate - HiLo NHibernate ID ジェネレーターの実装
「hilo」ジェネレーターを使用したいのですが、NH のドキュメントにあるように「特定の」テーブルを作成する方法とそれに渡す値の完全な例はありません。NH チュートリアルから抜粋した次のコード フラグメント
マッパー
DB table "Cat" CatId bigint NOT NULL Name varchar(16) NOT NULL Sex char(1) NULL Weight real NULL は、デフォルトではデータベースに何も作成しません。
「id」ノードのパラメーター
「無効なオブジェクト名 'hi_value'」エラー メッセージが表示されますが、それらがないと、「無効なオブジェクト名 'hibernate_unique_key'」が表示されます。
チュートリアルに示されている Cuid.Comb はうまく機能しますが、20K の猫オブジェクトをループに追加すると、99.12% の断片化が発生します。誰かが「hilo」実装の例を教えてくれますか、それとも私が欠けているものを教えてくれますか?
ありがとう。
nhibernate - nhibernate hilo ID ジェネレーターが奇妙な ID 番号を生成する
慣例により、nhibernate 3.2 マッピングを使用しています。
これが私のコードです。私のヒロ テーブルでは、NextHi は 1 です。ユーザー テーブルのすべてのレコードを削除し、そこに新しいユーザーを挿入します。10 や 11 のような非常に小さな番号を取得する代わりに、最初に挿入したユーザーの ID は 32768 です。この番号を取得する方法がわかりません。何を確認すればよいか教えてください。
java - hibernateHiLo-すべてのエンティティに1つのテーブル
私はこの質問を見ました
NHibernateHiLo-すべてのエンティティに1つのテーブル
だから私は読んだ
http://daniel.wertheim.se/2011/03/08/nhibernate-custom-id-generator/
そして私は休止状態でそれをやろうとしました。hibernateはプロパティハッシュマップの「where」キーをチェックしないため、configure関数を自分でオーバーライドしようとしましたが、値を読み取ったり更新したりできません。
これに対する準備ができている解決策はありますか?私のコードは以下の通りです。
myTableNameForHiloValuesテーブルの構造は次のようになります。
EntityName | NextHiValue
.net - SQL Server:アプリケーションの実行中にデータベースの復元を回避または検出する方法
データベースを復元する前に、作業中のシステムをシャットダウンする必要があります。これを行わないと、アプリケーションサーバーのメモリ内の状態がデータベースと一致しないため、深刻な問題が発生する可能性があります。破損したデータベースがエラーを引き起こし、システムが動作を停止してデータベースが使用できなくなるまで、しばらく時間がかかる場合があります。
だから私はこの状況を検出して問題を回避しようとします。
- アプリケーションサーバーは必ずしも接続を維持しているわけではないので、シングルユーザーモードやこのようなものはおそらく役に立たないでしょう。
- 復元が失敗したり、サーバーがシャットダウンしたりするかどうかは関係ありません。それを無視するべきではありません。
- データベースは、任意のマシン上の任意のSQLサーバーツールによって復元できます。自分のツールに頼ることはできません。
誰かがすでにそのような問題を解決しましたか?
SQL Server 2005以降、.NET(C#)、SMOを使用しています。
編集:
アプリケーションの設計に関する誤解や議論があるため、問題の原因を説明する必要があります。
Hi-Loジェネレーター:アプリケーションは、Hi-LoidジェネレーターのHi-Valueのキャッシュを持つNHibernateを使用します。Hi-Valueはデータベースから読み取られ、データベースに戻って別の範囲の数値を取得する必要があるまで、アプリケーションが特定の数の主キーを生成できるようにします。データベースに格納されているHi-Valueはインクリメントされるだけで、デクリメントされることはありません(データベースの古いバージョンが復元された場合を除く)。これはHi-Loジェネレーターの概念であり、私自身が発明したものでも実装したものでもありません。
キャッシュ:キャッシュでは、データベース内のレコードを識別するために主キーが使用されます。データベースの通常の使用では、主キーは変更されません。復元の場合、主キーは同じレコードを識別しなくなり、キャッシュはまったく間違っています。これも検出できません。たとえば、新しいレコードに間違った外部キーを設定する可能性があります。
DB復元は、データベースの他の通常の使用法と比較することはできません。復元は、データ処理のすべてのルールに違反します。
多くのアプリケーションは、実行中は接続を開いたままにして、復元を不可能にしていると思います。他のほとんどのアプリケーションは、データベースが復元されたときにクラッシュし、その後データベースにアクセスしようとします。私の場合、しばらく動作し続けることがありますが、これは問題です。
ほとんどの人は、アプリケーションの実行中にデータベースを復元しようとさえしないと思います。
アプリケーションがまだメモリ内にある間にデータベースが復元されると、理論上、私の場合は証明されたリスクがあります。ほとんどのアプリケーションがそれを処理しないという理由だけで、これはまったく問題ではないと言われたくありません。
nhibernate - Azure で HiLo を Nhibernate
Azure SQL でスキーマの作成を実行しようとしていますが、HiLo で生成されたものを使用しているため失敗します。Azure SQL には CLUSTERED INDEX が必要であり、HiLo テーブルには既定でインデックスがありません。Azure で HiLo を試したことがある人はいますか? この問題をどうするかについて、誰かが私を正しい方向に向けることができますか?
ありがとう
.net - Nhibernate の Pk データ型の選択?
nhibernate を使い始めたとき、私はいつもインクリメント int を使っていました。nhibernate と作業単位について詳しく知ったので、int をインクリメントするのは良い方法ではないように感じます (それらは作業単位を壊します)。
主キーとして何を使用すればよいのでしょうか。GUID または HILO を使用する必要がありますか?
GUID が一意であることを確認するのは好きですが、巨大なデータベースを取得し始めると、GUID が多くのスペースを占める可能性があるのは好きではありません。
私はHILOを使ったことはありませんが、それを機能させるには特別なhiloテーブルが必要だと思います。
人々の考えとは。
また、時間ができたら、この新しい PK データ型を使用するように古いコードを変換して、作業単位をより有効に活用できるようにしたいと考えています。
ok データを PK に変換する最良の方法は何ですか? 私が話した 2 つのデータ型のいずれかを使用すると、他のデータ型よりも簡単に変換できますか?