問題タブ [windsor-nhfacility]
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.
nhibernate - NHibernate(3.1.0.4000)Query<>およびNHibernateファシリティを使用したNullReferenceException
NHibernateに問題があり、解決策が見つからないようです。私のプロジェクトには単純なエンティティ(バッチ)がありますが、次のテストを実行しようとすると、例外が発生します。同様のクエリを実行するためにいくつかの異なる方法を試しましたが、すべての例外がほぼ同じです(実行されるLINQメソッドが異なります)。
最初のテスト:
例外:
2番目のテスト:
例外:
ただし、これは合格です(QueryOver <>を使用):
QueryOver <> APIの使用はまったく悪いことではありませんが、First()操作が非常に簡潔であるため、Query <> APIが機能していないことに少し戸惑っています。これは、ちょっと悲しいことです。 LINQを本当に楽しんでください。
これらのメソッドがこのような単純なテストに失敗した場合は奇妙に思われるので、これに対する解決策があることを本当に望んでいます。
編集
Oracle 11gを使用しています。マッピングは、CastleWindsorを介してNHibernateファシリティに登録されたFluentNHibernateを使用して行われます。私が書いたように、奇妙なことに、クエリはQueryOver <> APIで完全に機能しますが、LINQでは機能しません。
nhibernate - Castle Windsor と NHibernate 機能を使用して、正しい ISessionFactory を IRepository に注入する
1 つのアプリケーションがデータを取得する 3 つの SQL Server データベースがあります。NHibernate を使用して、さまざまなデータベースからデータを取得しています。各データベースが独自のアセンブリに独自のリポジトリとクラス マッピングを持つようにセットアップしました。Castle.config ファイルでは、Castle NHibernate 機能を使用してデータベース接続をセットアップしています。
私のすべてのリポジトリには、パラメーターとして ISessionFactory を取るコンストラクターがあります。
さまざまなリポジトリを定義したいインストーラー クラスがあります。
1 つのデータベースを使用すると問題なく動作します。2 番目のデータベースをミックスに追加すると、同じ ISessionFactory がすべてのリポジトリに挿入されます。私の質問は、これを処理する最良の方法は何ですか? どの ISessionFactory をどの Repository<> に注入する必要があるかを手動で指定できますが、これに関するドキュメントが見つからないようです。最善の方法は、次のようなことを言うことができる場合です。アセンブリ DAL.DatabaseOne のすべてのクラス マッピングに対して、databaseone.factory に対応する ISessionFactory を常に注入します。また、アセンブリ DAL.DatabaseTwo のすべてのクラス マッピングに対して、databasetwo.factory に対応する ISessionFactory を常に注入します。
考えや提案はありますか?
nhibernate - CastleWindsor NHibernate 機能から ISessionManager を使用したいのはなぜですか?
私はNHibernateとCastle Windsorの両方の初心者ですが、現在取り組んでいるアプリケーションは、Castle WindsorのNHibernate機能統合レベル2、つまりISessionManagerを使用しています。
データを手動で永続化するために必要なことと、ISessionManager を使用するために必要なことを比較しましたが、それほどコードを書いているわけではありません。私の質問は、なぜ ISessionManager が必要なのですか? それは私にどのような利点を提供していますか? ISessionManager を使用することの欠点は何ですか?
.net - Castle AutoTx Facility および NHibernate Facility を使用したトランザクション
Castle NHibernate ファシリティを AutoTx ファシリティで使用しようとしています。テストとして、トランザクションがロールバックされることを確認するために、サービスの途中で例外をスローしています。ただし、データは引き続きデータベースに保持されます。
IActivityService
TransactionAttribute を使用した私のサービス インターフェイス:
の実装CreateActivity
。AddActivity
追加されたデータがロールバックされることを期待して、ここで例外をスローしています。
の実装AddActivity
。SessionManager
注入されISessionManager
た です。
最後に、windsor コンテナーを構成する方法を次に示します。これは、流暢な nhibernate 構成がスワップインされた、ガイドNHibernateInstaller
からそのままです。
構成はかなり単純に見えましたが、何が欠けているのかわかりません。助けてくれてありがとう。
nhibernate - Transaction 属性の代わりにトランザクションを作成するためのカスタム サービス動作を使用して、Wcf サービスで Windsor NHibernateFacility を使用する
Wcf サービスで初めて Windsor NHibernate Facility を使用し、NHibernate の現在の手動登録を置き換えて、すべてのサービスで一貫したアプローチができるようにしようとしています。
現在の作業アプローチ
以前は、NHibernate コンポーネントを手動で登録していました。
その後、カスタム サービス ビヘイビアーを使用して、各操作のトランザクション スコープを作成および完了しました。
NHibernate 機能の統合
0.3.1.2001 アーティファクトをダウンロードし、以下のリソースを使用して、機能をプラグインし、NHibernate までの手動ワイヤを削除しようとしました。Transactional
ただし、サービスとメソッドをandTransaction
属性で装飾したくありません。以下は私の現在の配線です。
サービス エンドポイントの 1 つを呼び出すたびに、サービスは次の例外で失敗します。
解決タイプ「Juice.iCheque.eMoneySystem.Settlement.ISettlementService」のモデル「NHibernate.ISession」をインスタンス化しようとすると、コンテキストにトランザクションがありません。コール スタックに [Transaction] 属性を持つメソッドが含まれていることを確認した場合は、AutoTx 機能が登録されていることも確認してください。
問題はNHibernateFacility
、現在の実装で を使用し、Transaction
属性を使用しない方法です。
資力
http://richarddingwall.name/2010/08/17/one-nhibernate-session-per-wcf-operation-the-easy-way/
https://github.com/haf/Castle.Facility.NHibernate/wiki/NHibernate-Facility---クイックスタート
nhibernate - NHibernate をアップグレードしたところ、MSDTC の使用に関心がないのに MSDTC の問題が発生するようになりました
NHibernate ライブラリと Castle.Windsor をアップグレードしました。また、NHibernateIntegration から Castle.Facilities.NHibernate に移行しました。
ここの NHFacilities ページでアドバイスを実装しました - https://github.com/haf/Castle.Facilities.NHibernate/wiki
Web アプリを実行すると、さまざまな MSDTC 例外によって停止します。最新のMicrosoft Distributed Transaction Coordinator (MS DTC) は、このトランザクションを停止しました。
この時点で、私は MSDTC が何であるかを調べる必要があり、それを使用することにまったく興味がないことを確認する必要がありました! ;-)
私はそれを構成しませんでしたし、それを使用することを知らされた場所も見当たりません。
私が行うグーグル検索は、それを使用していることとその理由を知っている人々に関係しています。一方、何が起こったのかわかりません。
新しい NHibernate (3.2) または NHFacilities または Castle.Windsor 関連の依存関係のいずれかについて、私のコードが MSDTC の使用を開始する原因となる可能性のあるものについて誰か教えてもらえますか?
そして、私はそれを取り除くことができますか?
それとも、修正する必要がある私のコードに本当に間違っている何かもっと不吉なものがありますか? 覚えておいて、アップグレード前はそのままで動作しました。
.net - c# - .Net v3.5 で Castle.Facilities.NHibernate を使用することは可能ですか?
Windsor と NHibernate を使用して ASP.NET アプリケーションを開発しています。Castle の新しいNHibernateFacilityを使用したいのですが、.NET 3.5 に固執しており、NHibernateFacility と AutoTx は .NET 4 のみを対象としています。
v3.5 で再コンパイルしても安全ですか? そうでない場合、アプリケーションごとに複数の ISessionFactory を維持する別の簡単な方法はありますか?
fluent-nhibernate - Castle.Facility.AutoTx と Castle.Facility.NHibernate を使用して Web リクエストごとに nhibernate セッションを作成する
Castle Windors を使用しています。これは AutoTxとhafによる NHibernate Facilityです。最終的には、AutoTx によって提供されるトランザクション属性の使いやすさの利点が必要です。(ASP.NET MVC 4 プロジェクト)。
Castle.Facilities.NHibernate.ISessionManager を使用して PerWebRequest セッションを管理しています。Windsor Installer を次のようにセットアップしました。
私は SessionPerWebRequest の DefaultLifeStyle を使用しています。これはまさにそれを行うと予想され、同じリクエスト内の SessionManager での OpenSession へのすべての呼び出しが同じセッションを使用するように、Web リクエスト全体を持続するセッションを提供します。私は次のコードでそれをテストしています:
ログをチェックして、作成された各セッションのIDを確認します。IDは常に異なります。例えば
Handlers の方法で web.config に何も追加していないことは注目に値します。する必要がありますか?( NHib Facility Wiki でこれを示唆するドキュメントは見当たりませんでした) 同じセッションが常に正しく返されないと期待しています。
ファシリティのソース コードを調べましたが、Web リクエストごとのセッションがどのようにインスタンス化されるのか、OpenSession を複数回呼び出すと同じ Web リクエストで同じセッションが発生するのかわかりません。
以下は、SessionManager が Windsor に登録される方法です。
ISession は、以下を使用して Windsor に登録されます。
これは ISession を PerWebRequest として登録しますが、セッションが必要なときにその名前付き登録が抽出されるコードのどこにも表示されませんか?
Web リクエストごとのセッションを機能させるために必要なことについてのヘルプをいただければ幸いです。
更新 ファクトリを使用するのではなく、SessionManager コンストラクターに渡されるコード関数を、コンテナーから ISession を取得するコードに置き換えることにしました。トランザクションにラップされ、Webリクエストごとに1つのセッションのみを開く、または一時的なものなど、私がやりたいことに対して完全に機能します。
Kernel.Resolve() は、コンテナーに最初に登録されたサービスを取得することを期待しています。これは、ライフスタイルを設定したものになります。
nhibernate - xmlではなくC#コードで「Windsor NHibernate Facility」を設定するには?
最近、Castle Windsor と Nhibernate Facility をレガシーの古いプロジェクトに統合しようとしています。ドキュメント ( http://docs.castleproject.org/Windsor.NHibernate-Facility.ashx ) に従ってください。
しかし、xml ではなく、C# コードで NHibernate SessionFactory を構成する方法があるのだろうかと思います。その理由は、私の古いプロジェクトでは接続文字列を他の場所で構成しているため、2 つの場所で構成することができません。私はすでに NHibernate セッション ファクトリ (3 つのデータベース、3 つのファクトリ) を正常に構築しています。NHibernate ファシリティにセッション ファクトリ オブジェクトを挿入し、'id' と 'alias' を指定するだけでよいのですが、可能ですか? またはより良いアイデアはありますか?
前もって感謝します !