2011-08-21 12 views
1

NHとSQL Serverでアプリケーションを開発しています。私は 自分自身でデータベース構造を作成する方法と一緒に行くことを決めた後、 NHとマップします。NHibernate推奨されるデータベース構造外部キー

私は への外部キーを使用して参照整合性を維持するのが好きです。 1つのテーブルマッピングがNULL可能である場合は、これまでルックアップテーブルに ダミーのゼロID行が作成されています。なぜなら、私は左側の結合クエリが完全結合として performantではないことを見てきたからです。これは、私が を行った理由です。

が新しいデータベース構造でこれを再度実行する必要があるかどうかについてのアドバイスを得ることに熱心であり、 が何らかの理由でNHがグローバルにゼロIDを無視するようになることを意味します。私は これは、NHを使用して、おそらく私は データベースを使用して代替ルートを取っているときに危険に満ちている可能性が疑わしい。任意のアドバイス 非常に感謝していただきありがとうございます。

+0

私の意見では、NHを使用すると、OOの観点からアプリケーションを開発することをお勧めします。 OOモデルを最初に開発し、クラス(カプセル化など)を気にし、データベースの詳細についてはあまり気にしないことをお勧めします。数百万のレコードを処理する必要があり、クラスがほんのわずかな場合は、NHの大きな利点を得ることはできません。 –

+0

あなたはこれで正しいかもしれません、私にとっては良い学習プロセスです。 – Slim

答えて

1

私がこれを行った理由は、左結合が完全結合と同じように実行されていないことです。

あなたのアプリケーション、性能要件、および測定したことについては十分に分かりません。しかし、簡単にするためにFK列に人工的な0の値を作成しないほうがいいかもしれません。あなたが行った測定は、もはや相対的なものではないかもしれません。あるいは、これが最初のボトルネックではなかったかもしれません。おそらく、FK列にインデックスを置くことによって、左の結合パフォーマンスを向上させる方法があります。

NHibernateで1対1をマッピングするときに知る必要があるのは、NULL可能な関連付けの遅延ロードがnot supportedであることです。オプションについてはthis答えを見てください。

+0

ドミトリー、返信する時間をとってくれてありがとう。データベースを調べると、実際にはnull値の外部キーが必要なケースはそれほど多くないことがわかりました。あなたの答えは私がより自信を持って前進できるようにすることです。 NHibernateの実装中に問題が発生した場合は再投稿します。 – Slim

関連する問題