問題タブ [castle-activerecord]

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 投票する
5 に答える
3207 参照

c# - ドメイン (ORM) オブジェクトからデータ転送オブジェクト (DTO) へのマッピング方法に関する提案

私が取り組んでいる現在のシステムでは、Castle Activerecord を利用して、ドメイン オブジェクトとデータベース間の ORM (オブジェクト リレーショナル マッピング) を提供しています。これはすべてうまくいき、ほとんどの場合、実際にうまく機能します。

この問題は、Castle Activerecords の非同期実行のサポート、具体的にはオブジェクトが属するセッションを管理する SessionScope で発生します。要するに、悪いことが起こります!

そのため、ドメイン オブジェクト (DB が存在することを知っていて気にする) から DTO オブジェクト (DB について何も知らず、セッション、マッピング属性などを気にしない) に簡単に変換する (自動的に考える) 方法を探しています。 ORM)。

誰でもこれを行うことについて提案がありますか。まず、オブジェクトの基本的な一対一のマッピングを探しています。ドメイン オブジェクトPersonはPersonDTOと言うようにマッピングされます。もったいないので手動でやりたくありません。

当然反省が頭に浮かびますが、このサイトに出回っているより優れた IT 知識から、「よりクールな」 提案が得られることを期待しています。

ああ、Castle ActiveRecord にマップされる前に述べたように、ORM オブジェクトである C# で作業しています。


コード例:

@ajmastrean のリクエストにより、私が (ひどく) 一緒に嘲笑した例にリンクしました。この例には、キャプチャ フォーム、キャプチャ フォームコントローラドメインオブジェクト、activerecordリポジトリ、および非同期ヘルパーが含まれています。実行に必要な ActiveRecored dll を含めたため、少し大きい (3MB) です。ローカル マシンにActiveRecordAsyncというデータベースを作成するか、.config ファイルを変更する必要があります。

例の基本的な詳細:

キャプチャフォーム

キャプチャ フォームにはコントローラへの参照があります

フォームの初期化時に MyController.Load() private void InitForm () { MyController = new CompanyCaptureController(this); を呼び出します。MyController.Load(); これは LoadComplete() というメソッドに戻ります

これは、遅延ロードとして設定された Company の子リストを使用しているため、 「悪いこと」が発生する場所です。

コントローラー

コントローラーには、フォームから呼び出された Load メソッドがあり、Asyc ヘルパーを呼び出して LoadCompany メソッドを非同期的に呼び出し、Capture フォームの LoadComplete メソッドに戻ります。

LoadCompany() メソッドは、単純にリポジトリを利用して既知の会社を見つけます。

例の残りの部分は一般的なもので、基本クラスから継承する 2 つのドメイン クラス、データを挿入するためのセットアップ ファイル、およびActiveRecordMediator機能を提供するためのリポジトリがあります。

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

c# - C# + Castle ActiveRecord: HasAndBelongsToMany とコレクション

投稿とタグの間に多対多の関係 (ActiveRecord 属性 HasAndBelongsToMany を使用) があるとしましょう (無実を保護するためにドメイン オブジェクト名が変更されています)。次のようなメソッドが必要でした。

れは、パラメータ内のすべての (一部だけでなく) タグを持つすべての投稿を返します。NHibernate Expressions または HQL を使用してこれを達成する方法はありますか? HQL のドキュメントを検索しましたが、自分のニーズに合ったものが見つかりませんでした。明らかな何かが欠けていることを願っています!

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

orm - Castle-.NET 3.5が壊れたActiveRecordチュートリアル?

誰かがC#3.5でActiveRecordイントロサンプルを試しましたか?どういうわけか、サンプルが完全に間違っているか、単に古くなっているように感じます。XML構成はまったく間違っています。

する必要があります:

(nhibernateの構成構文を正しく理解している場合..)

私は何が間違っているのだろうと思っています。ユーザーモデルでCount()を呼び出すと、「ユーザーに対してExecuteQueryを実行できませんでした」という例外が発生します。

これが何であるかわかりません。チュートリアルのソースは、ページのソース(特にXML構成)とは大きく異なり、ほとんどの場合(ジェネリックなどは含まれていません)、構文が異なるVS2003サンプルです。

助言がありますか?ActiveRecordは素晴らしく見えます。

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

c# - リストを持つことは可能ですかアクティブなレコード クラスのプロパティとして

値を保持するために (TodoListItem) などの別のエンティティを作成する必要なく、ActiveRecord クラスで String などの基本型の HasMany 関係を持つことは可能ですか。

誰でも助けることができますか?

0 投票する
5 に答える
4170 参照

c# - Castle ActiveRecord を使用してストアド プロシージャを実行するにはどうすればよいですか?

ネット上のどこかでこのトピックについての議論があると思いますが、URL をなくしてしまい、グーグルで見つけることができません。

私が今試すかもしれないことは次のとおりです。

ただし、これが正しい方法なのか、それとももっと良い方法があるのか​​はよくわかりません。

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

.net - Castle ActiveRecord (.net) の使用時にデフォルトの CRUD UI を生成する

Activerecord (城の実装) または NET に類似したものを使用して、(エンティティを指定して) デフォルトの crud を生成する簡単な方法はありますか?

RoRにはこのようなものがあります(activescaffoldと呼ばれると思います)ありがとう

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

c# - c# で ActiveRecord クラスのテーブル名を教えてもらえますか?

スキーマが初期化中のオブジェクトと一致するかどうかを確認しようとしています。

単にクラス名を反映する以外に、クラスの TableName を取得する方法はありますか?

明示的な TableNames を持つクラスを使用しています

編集:ジョーのソリューションを使用して、テーブル名を指定しない場合を追加しました。おそらく制約を使用できます

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

nhibernate - NHibernate/ActiveRecord - 外部キー列のみにマップする方法はありますか?

私はCastle ActiveRecordを使用していますが、NHibernateで動作するソリューションはActiveRecordでも動作するはずなので、この質問はNHibernateにも当てはまります。とにかく、私が持っているのは、次のような基本的なテーブル構造です:

TableA -hasMany-> TableB

対応するオブジェクト EntityA と EntityB があります。EntityA には EntityB オブジェクトの IList があります。この部分は正常に動作します。ここで、EntityB に EntityA への何らかの参照を持たせたいと考えています。次のように、EntityB の BelongsTo 属性を使用して、完全な EntityA 型への実際の参照を返すことができることを私は知っています。

しかし、私が本当にやりたいことは次のとおりです。

したがって、EntityB は、実際のオブジェクトへの参照ではなく、親オブジェクトの ID のみを格納します。これは些細な例ですが、このアプローチを採用したいのには十分な理由があります。私が取り組んでいるアプリケーションには、特定の EntityB のようなオブジェクトを表示するページがあり、それらのページに、対応する親ページへのリンク (ハイパーリンクなど) を含めたいと考えています。上記の最初のアプローチを使用してこれを行うことができますが、本当に必要なのは ID だけである場合、EntityA オブジェクト全体を読み込む必要があります。大したことではありませんが、無駄に思えます。遅延読み込みを使用できることはわかっていますが、これもハックのように思えます...

次のように [Property] 属性を使用して外部キーにフラグを立てようとしました。

このアプローチの問題は、新しいオブジェクト ツリーで EntityA.SaveAndFlush() を実行すると、EntityB.ParentId が null のままになることです。正しい値がデータベースに書き込まれており、EntityA.Refresh() を実行することで値を強制的に EntityB.ParentId に戻すことができますが、これもちょっとしたハックのように思えます。

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

nhibernate - NHibernate セッションをフラッシュして、トランザクションをコミットせずに新しいセッションを取得できますか?

永続化のためにCastle ActiveRecordを使用しています。次のことを行う永続化テストの基本クラスを作成しようとしています:

  • テスト ケースごとにトランザクションを開き、テスト ケースの最後にロールバックして、テスト ケースごとにスキーマを再構築しなくても、テスト ケースごとにクリーンな DB を取得できるようにします。
  • NHibernate セッションをフラッシュし、テストの途中で新しいセッションを取得する機能を提供して、永続化操作が NHibernate セッションだけでなく DB に実際にヒットしたことを確認できるようにします。

基本クラス ( ) が機能していることを証明するためにARTestBase、次のサンプル テストを作成しました。

これが基本クラスでの私の最善の努力です。を正しく実装Flush()しているため、3 番目のテスト ケースはパスします。ただし、トランザクションはロールバックされないため、2 番目のテストは失敗します。

インメモリ データベースでカスタム SQLite プロバイダーを使用していることに注意してください。このブログ投稿から引用した私のカスタム プロバイダーは、スキーマを維持するために常に接続を開いたままにします。これを削除して通常の SQL Server データベースを使用しても、動作は変わりません。

必要な動作を実現する方法はありますか?

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

nhibernate - Castle ActiveRecord を使用して、親子の自己参照を含むレコードをプリロードするにはどうすればよいですか?

私のSQLテーブルは次のようになります。

私の ActiveRecord モデルの次のクラスにマップします。

次のコードを使用して、ActiveRecord を使用してツリーのルートを取得しています。

これにより、正しいオブジェクト グラフが得られますが、SQL プロファイラー トレースでは、ツリー内のリーフ以外のノードごとに個別のクエリによって子ページが読み込まれていることが示されます。

ActiveRecord にすべてを前もってロードしてから、("SELECT * FROM Page")メモリ内オブジェクトをソートして必要な親子関係を与えるにはどうすればよいですか?