問題タブ [nhibernate-3]

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.

0 投票する
2 に答える
938 参照

c# - オブジェクトAにはオブジェクトBのコレクションがあります。LINQを使用するNHibernateで、少なくとも1つのBを持つAのリストを取得する方法

これらのドメインオブジェクトを例として取り上げましょう。

NHibernate 3.xを使用して、これらの名前Aを持つオブジェクトを取得する必要がありますBname1name2

たとえば、B名前の配列から文字列として取得したいものを取得するとしますstring[] names = new string[] { "name1", "name2" }

私は考えましたが.Query<A>().Where(someA => some.CollectionOfB.Any(someB => names.Contains(someB.Name)))これがNHibernateLINQプロバイダーによってSQLクエリとしてコンパイルされるのではないかと思います。多分これはあまり最適ではないSQLクエリにコンパイルされるでしょう。

NHibernate 3.x LINQプロバイダーを使用してこのクエリを構築する最適な方法は何でしょうか?

0 投票する
1 に答える
3117 参照

mysql - 同じ識別子値を持つ別のオブジェクトが、エンティティのセッション: XXX に既に関連付けられていました

NHibernate 3 と MySQL の Castle.ActiveRecord を実行する ASP.NET MVC 3 C# プロジェクトがあり、このチュートリアルで動作するように「要求ごとに 1 つのセッション」を取得しようとしています。

そして、それはいくつかのものでうまくいくようですが、そうするとSaveAndFlush()、コマンドはエラーを出します:

そして、実行しようとするとSave()、同じメッセージが表示されるため、関数とは関係ありませんFlush()

検索するといくつかの結果が見つかりましたが、それを機能させるために使用できるものはありません。

自分のやり方がわからないのでテストしていないのは、

何か案は?

0 投票する
1 に答える
84 参照

nhibernate - Get()の後にアソシエーションを熱心にロードする

私はこれよりも関係をロードするためのより良い方法を見つけようとしています:

私は次のようにQueryOverAPIでこれを行うことができます:

同じSQLが生成されると思いますが、冗長すぎます。

以下のようなことをする方法はありますか?

0 投票する
2 に答える
504 参照

linq - NHib 3の構成とマッピングは空の結果を返しますか?

:私は特にFluent NHibernateを使用していませんが、3.xの組み込みのマッピングスタイルを使用しています。ただし、レコードを返す必要があると思うときに、空白のレコードセットを取得しています。

私は何か間違ったことをしていると確信しており、それが私を壁に押し上げています。:)

背景/セットアップ

  • MaximoというIBMの製品用のOracle11gデータベースがあります。
  • この製品には、作業指示をリストする作業指示と呼ばれるテーブルがあります。そのテーブルには、一意の作業指示番号を表す「wonum」というフィールドがあります。
  • maximoスキーマを介してテーブルにアクセスできる「レポート」ユーザーがいます
    • 例:「select * frommaximo.workorder」
  • OracleのManagedODP.NETDLLを使用してデータタスクを実行し、初めて使用しています。

私が試したこと

  • これをテストするための基本的なコンソールアプリケーションを作成しました
  • マスターブランチのNHibernate.DriverからOracleManagedClientDriver.csを追加しました(使用しているリリースには正式には含まれていません)。
  • WorkorderBriefBriefというPOCOを作成しました。これには、WorkorderNumberフィールドしかありません。
  • その値のみを読み取り専用値としてマップするクラスマップWorkorderBriefBriefMapを作成しました。
  • 作業指示書の行を書き込もうとするコンソール出力を備えたコンソールアプリケーションを作成しました。
  • セッションとトランザクションは正しく開いているように見えますが、
  • 接続文字列に対して標準のODP.NETOracleConnectionをテストしました

コード

POCO:WorkorderBriefBrief.cs

マッピング:WorkorderBriefBriefMap.cs

まとめる:Program.cs

あなたが与えることができるどんな助けにも前もって感謝します!

アップデート

次のコード(OracleDataReaderを使用する標準のADO.NET)は正常に機能し、必要な16個の作業指示番号を返します。私にとって、これはOracleManagedODP.NETよりもNHibernateを使用していることを示しています。ですから、上記のマッピングまたは構成で行ったのはばかげたことだと思います。

0 投票する
1 に答える
361 参照

c# - 'Disabled Ghost Property fetching for の意味エンティティ レベルでレイジーをサポートしていないためです。

NHibernate-DataAccess で次の警告が表示されました。

「エンティティ レベルでレイジーをサポートしていないため、エンティティのゴースト プロパティ フェッチを無効にしました」

誰かが知っていますか、これはどういう意味ですか?- これを解決するには何を変更する必要がありますか?

この警告の原因となっているエンティティのマッピングを次に示します。

クラス BusinessTypeBase の定義を更新します。

クラス BusinessType の定義を更新します。

0 投票する
1 に答える
57 参照

nhibernate - ID でリスト アイテムを追加する

まあ言ってみれば:

NHibernate を使用して DDD を実装しようとしているので、データベースから取得せずに子アイテムを親にリンクする方法を知りたいです。

0 投票する
1 に答える
681 参照

mapping-by-code - MappingException の理由: 次のパーシスタがありません: MyClassProxy

SaveOrUpdate通話中にMappingException No persister for: MyClassProxy.

奇妙なのは、コードを使用して新しい行を挿入できることですが、その行が存在し、リポジトリがそれを更新しようとすると、この例外が発生します。

この例外に関する多くの質問を検索して読んだ後、この理由を見つけるのに役立ちませんでした。マッピングがデータの読み取り/挿入で機能する場合、この例外につながる可能性のある理由は何ですか?

私のケースに関するいくつかの詳細情報:

  • NHibernate バージョン3.3.1.4000を使用
  • マッピングはコードによって作成され(流暢ではありません)、参照される別のdllで作成されます
  • マッピングは aClassMappingSubclassMapping識別子付きの aで構成されます
0 投票する
2 に答える
379 参照

c# - NHibernate に格納されていない多対多の関連付け

問題を正確に説明しようとします。

(コレクション)と1 対多の関係をA持つエンティティがあります。B

また、エンティティBはエンティティmany-to-manyと関係がありますC

タイプ の一時オブジェクトを最初に保存すると、と関連付けられた関連する一時エンティティ インスタンスAの両方がデータベースに正しく作成されますが、 に関連付けられた一時インスタンスは作成されません。ABACB

多対多の関連付けは、関連付けの両側で次のようにマッピングされます (コードによるマッピング アプローチ)。

また、両方ともまだ一時的なオブジェクトであるエンティティBとエンティティがインスタンス化されると、エンティティのコレクションにエンティティの 1 つを追加し、その逆も行います。CBC

最後に、トランザクションは正常に終了します。これは、エンティティAB、およびそれらの関連付けが期待どおりにデータベースに格納されていることを意味します。

エンティティのC関連付けがデータベースに保持されないのはなぜですか? 私は何を間違っていますか?

  • 注: NHibernate 3.x シリーズの最新バージョンを使用しています。

  • 注 2: SQL Server データベースのプロファイルを作成したところ、m:n テーブルへの挿入は実行されません。

0 投票する
1 に答える
243 参照

c# - 「その場で」Hibernateの多対1

次の問題が NHibernate で別の方法で解決できるかどうか知りたいです。

このドメインがあるとしましょう:

プロパティは、コレクション プロパティに関連付けられた永続オブジェクトのLastAssociationWithB1 つを表します。BCollectionAssociationOfB

実際には、日付によって追加されLastAssociationWithBた最後のB永続オブジェクトを表します。

したがって、ドメインでは、 に新しいBが追加されるとCollectionAssociationOfB、 にも割り当てられLastAssociationWithBます。

これは、後でコードを単純な LINQ クエリに変換するための良い方法です。

とにかく、私の質問は次のとおりです。これに対する他のアプローチを知っていますか? たとえば、内部で SQL結合を生成するある種の多対 1 の関連付けで、テーブルに明示的な 1:n 関係を持たせる必要はありませんが、クラス プロパティは維持されますか?A

または、私の現在のアプローチは、このシナリオを解決するための推奨される方法ですか?

補足: 実際のシナリオでCollectionAssociationOfBは、NHibernate マッピング構成で順序付けが指定されているため、順序付けられたリストです。

0 投票する
2 に答える
496 参照

nhibernate - NHibernate RowCountInt64 は、変換されたクエリで間違ったカウントを返します

NHibernate クエリの実行中に奇妙なエラーが発生しました。フィルター処理および変換されるタイプのクエリがありますIQueryOver<ExternalUser, ExternalUser>(問題の原因であると推測している DistinctRootEntity を使用)。次のようなクエリを作成します。

実行するquery.RowCountInt64()と4になります。

実行するquery.List()と、3つのアイテムが返されます。

私も試してみquery.ToRowCountInt64Query().List<long>().Sum()ましたが、これも4になります。

私も試してみquery.ToRowCountInt64Query().FutureValue<long>().Valueましたが、これも4になります。

これを解決する方法はありますか?