問題タブ [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 投票する
1 に答える
6342 参照

c# - Nhibernate で条件付き Sum を実行するには?

このSQLコードと同等のことをしようとしています

ニバネイトで。

これまで試した

しかし、これにより次のエラーが発生します。

IIF((Convert(c.myProperty) = 2), 1, 0) からメンバーを特定できませんでした

何か考えはありますか?

編集 1: 2 つのクエリで結果を取得できますが、これを 1 つのクエリだけで実行したいと考えています。

編集 2: ここでは QueryOver を使用しています。

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

c# - NHibernate は常に空の文字列ではなく NULL を書き込む必要があります

Microsoft SQL Server データベース (2005 以降) で NHibernate 3 を使用しています。現在、空の文字列ではなく常に NULL をデータベースに書き込むように NHibernate に指示する方法を探しています。これを行う最良の方法は何ですか?- または、これを行うためのスイッチが NHibernate にあるのでしょうか。ご協力いただきありがとうございます。

0 投票する
3 に答える
829 参照

c# - Insert-Statement を実行するように NHibernate に指示する

私はRepository-PatternでNHibernateを使用しています。リポジトリにはメソッド Insert() と Update() があります。ここで、Insert() は Session.Save(entity) を呼び出し、Update() は Session.Merge(entity) を呼び出します。My Entities には、PrimaryKey の次のマッピングがあります。

IDは私から割り当てられます。ここで、Session.Save(entity) は最初に Select を実行して、Entity が新規か既存かを確認します。しかし、Insert()-Case では、エンティティは常に新しいものです。私は今、NHibernate に常に挿入を行うように指示する方法を探しています。代わりに、最初に選択してから挿入します。Version-Property を使用してこれを実行できることを確認しましたが、Database-Schema を変更することはできません。

助けてくれてありがとう。

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

tsql - linq to nhibernate の条件付き行数が機能しない

次の単純な sql クエリを Linq から NHibernate に変換したい:

私の簡略化された UserNews クラス:

次のlinqクエリを書きました:

しかし、生成されたSQLは私のステートメントを無視し、x => x.UserHits > 0不要な「左外部結合」を作成します:

この問題を修正または回避するにはどうすればよいですか? たぶん、これは QueryOver 構文でよりうまくできるでしょうか?

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

c# - Nhibernate では、外部キー列以外のマッピングで他の基準を使用して、1 対多の内容をさらに制限できますか?

テーブル A オブジェクトがいくつかのテーブル B レコードを 1 対多としてマッピングする必要がある状況に遭遇しましたが、テーブル B には特定のテーブル A レコードにリンクされた非常に多くのレコードがあり、どのレコードがそれを作成するかをさらに制限したいと考えています。 1 対多。これは、運用中の他のレガシー プログラムのために簡単に変更できないレガシー データベース構造です。

テーブル B が次のようになっているとします。

TableBColumn1 レコードに、テーブル B レコードを何らかの方法で分類する 'N' 4 文字コードのいずれかが含まれているとします。

とにかく、TableAFKey 列を使用して 1 対多を既にマップしたとしましょう。たとえば、TableBColumn1 == "ABCD" のレコードのみが必要であることをマッピングに伝えることはできますか?

コードによるマッピングを使用するものはすべて、推奨されるソリューションです。古い xml マッピングで実行できても、コードによるマッピングでは実行できない場合は、それも解決策と見なします。

ありがとう!

0 投票する
3 に答える
6407 参照

nhibernate - 流暢なNHibernate-IndexOutOfRange

私はすべての投稿を読み、列が2回参照されているためにIndexOutOfRangeが通常発生することを知っています。しかし、私のマッピングに基づいて、それがどのように起こっているのかわかりません。構成でSHOW_SQLがtrueの場合、テーブルへの挿入が表示され、Events次にテーブルをIndexOutOfRangeException参照するが表示されRadioButtonQuestionsます。例外を生成するために使用しようとしているSQLが表示されません。AutoMappingを使用しClassMapてみましたが、問題を絞り込むために、これら2つのクラスをフルに切り替えました。

生成されたSQLは正しく見えます:

これは、NH3.3.0.4000およびFNH1.3.0.727を使用しています。(RadioButtonQuestionを添付して)新しいイベントを保存しようとすると、次のように表示されます。

NHibernate:INSERT INTO Events(EventDate、Title)VALUES(@ p0、@ p1); @ p0 = 5/21/2012 12:32:11 PM [Type:DateTime(0)]、@ p1 ='My Test Event' [タイプ:文字列(0)] NHibernate:@@IDENTITYを選択

Events.Tests.Events.Tasks.EventTasksTests.CanCreateEvent:NHibernate.PropertyValueException:Events.Domain.RadioButtonQuestion._Events.Domain.Event.RadioButtonQuestionsIndexBackrefのプロパティ値の脱水エラー----> System.IndexOutOfRangeException:ParameterIndex「3」のSqlCeParameterこのSqlCeParameterCollectionには含まれていません。

したがって、列が実際に2回参照されている場合、その動作を引き起こしているFNH構成の問題は何ですか?私は注文との双方向関係(1つのイベントに多くのラジオボタンの質問があります)を試みています(私が読んだことから、NHは双方向関係にないのでそれを維持します)。FWIWEventからRadioButtonQuestionを削除して一方向の関係としてこれも試しましたが、それでも同じ例外が発生しました。

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

nhibernate - NHibernateQueryOverとコレクションフィルタリング

私のクラスの簡単な例:

ユーザーは、投稿リストをフィルタリングするためにいくつかの関心のあるタグをチェックします。

次のような選択したタグですべての投稿をフィルタリングする必要があります。

例外:NHibernate.QueryException: Cannot use collections with InExpression

実際、そのタグの1つがInterestedTagsに含まれている場合は、投稿を表示する必要があります。

UPD

私のために働く:

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

.net - Linq to Nhibernate で QueryOver<> を使用して大きなサイズのデータ​​をフェッチ中に OutOfMemory 例外が発生する

NHibernate 3.0 で Linq to NHibernate を使用している asp.net Web アプリケーションがあります。

関数では、20 列の 1000 万レコードを含むテーブルから約 20000 レコードを取得する必要があります。

レコードを取得するために Session.QueryOver<>() メソッドを使用しています。

機能コードは次のとおりです。

このコードは、テーブルに 2 つの lac レコードが含まれるまで機能します。

しかし、テーブルに 10 個の lac レコードを追加した後、このメソッドは次のようなエラーをスローします。

NHibernate.Util.ADOExceptionReporter| タイプ 'System.OutOfMemoryException' の例外がスローされました。

NHibernate.Util.ADOExceptionReporter| タイプ 'System.OutOfMemoryException' の例外がスローされました。

NHibernate.Util.ADOExceptionReporter| タイプ 'System.OutOfMemoryException' の例外がスローされました。

PaymentCurrency は Payment19_2_0_、this_.PaymentDate は Payment20_2_0_、this_.TransactionId は Transac21_2_0_、this_.BatchId は BatchId2_0_ FROM TIOTestDB.dbo.BatchDetails this_ WHERE this_.BatchId = ? ] 位置パラメータ: #0>3 [SQL: this_.RefereId を Referenc1_2_0_ として、this_.AccNumber を AccountN2_2_0_ として、this_.AcStatus を AccountS3_2_0_ として、this_.AcType を AccountT4_2_0_ として、this_.AccSubType を AccountS5_2_0_ として、this_.AccountDescription を AccountD6_2_0_ として、this_. ActivationDate は Activati7_2_0_、this_.CombinedBilling は Combined8_2_0_、this_.PlanAmount は PlanAmount2_0_、this_.PlanCode は PlanCode2_0_、this_.CustomerName は Custome11_2_0_、this_.Email は Custome12_2_0_、this_.Phone は Custome13_2_0_、this_.Address は Customer14_2_0_、 Custome15_2_0_、this_.State は Custome16_2_0_、this_.ZipCode は Custome17_2_0_、this_.

foreach() 反復でこの関数を実行しているため、クエリは 1 回または 2 回実行されてデータを取得しますが、その後、メモリ不足の例外がスローされます。

経験豊富な NHibernate 開発者として、パフォーマンスを最適化するために LINQ クエリを再構築する必要があることを理解できます。

また、インターネットで検索しましたが、多くの情報を得ることができませんでした。

早めの返信をいただければ幸いです。

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

nhibernate - 実際の削除ではなく状態変更

Session.Delete()DBからの実際の削除を実行せずに、int State列の値を特別に削除された値に更新するように動作をオーバーロードすることは可能ですか? GetAll()また、削除されたエンティティの読み込みをメソッドごとに制限するとよいでしょう。

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

c# - NHibernate Map-by-Code ComponentAsId の無効な列

私は次の表を持っています

tblChild

父コード 子番号 名前

FatherCodeおよびChildNumberはテーブルの主キーです。

このようなことがこのデータベースで非常に頻繁に発生するため (私はそれをまったく制御できません)、ID をマップするために次のクラスを作成しました。

さて、マッピングは次のようになります。

しかし、テーブルにクエリを実行しようとすると、NHibernate は Id を列として取得しようとします。

何が間違っているのかわからず、これをこの構造でマップする方法をたくさん試しましたが、何も機能しません:(