問題タブ [csla]
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.
.net - 同じアセンブリの複数のバージョンをgacに追加するにはどうすればよいですか
私の1つのASP.NETWebサイトは、2つの異なるビジネスオブジェクトクラスライブラリを使用しています。これら2つのライブラリ間には共通のフレームワークDLL(CSLA.dll)があります。問題は、一方のライブラリがCSLA v.4.0.1にアップグレードし、もう一方のライブラリがv.2.1.4のままにしておきたいということです。
Webサイトでこの競合を解決するにはどうすればよいですか?CSLAの両方のバージョンをGACにインストールする必要があると思いますが、2つのことを行う方法がわかりません
- 同じDLLの異なるバージョンをGACに追加します(
gacutil -i
両方のCSLA.dllで使用しました。.NET構成2.0ツールにCSLA.dll 2.1.4が表示されますが、CSLA.dll4.0.1が表示されます。C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\Csla
- Webサイトに2つの異なるバージョンを参照させる
よろしくお願いします
c# - XML シリアル化可能にするには、ICollection から継承する型に Add の実装が必要です。
新しい .Net 4.0 プロジェクトで使用しようとしている既存のプロジェクトの CSLA (1.x フレームワーク) オブジェクトがあります。オブジェクトは本番環境で使用されており、オブジェクトのセットが 2 つないと 2.x または EF に変換できません。
私の c# webservice (実行しようとすると) で、次のエラーが発生します。
私が言ったように、これらのオブジェクトは vb.net で書かれた CSLA オブジェクトです。これはどこを見ればいいのかわからない。CSLA 1.x と通信しようとする .Net 4.0 の問題ですか、それとも Web サービスの問題ですか (これらのオブジェクトは元々 Web サービスを使用していないため)。
この問題を解決するためにどこを見ればよいか、誰かが考えていますか? CSLA 2.x への変換を提案する必要がありますか?
どんな提案でも大歓迎です!
c# - オブジェクト プーリングと CSLA フレームワーク
CSLA フレームワークの基本的な方法論に従うアプリケーションがあります。具体的には、オブジェクトはその状態を維持する方法と、自分自身を作成、更新、削除する方法を知っています。car クラスはこの考え方を示しています。
アプリケーションは 100 万を超えるオブジェクトを作成および破棄します。ガベージ コレクションの量が原因で、オブジェクト作成のせん断数がパフォーマンスに影響を与えています。また、これらのオブジェクトの多くは完全に一時的なものであり、単にデータをリポジトリに渡すために使用されます。
Flyweight パターンについて読んだことがありますが、これは私のニーズに合っているようです。また、オブジェクト プーリングと関連するコードについても読みました。
私が問題を抱えているのは、プールを使用して何百万もの Car オブジェクトを作成するか、オブジェクトの原則と組み合わせてフライウェイトのデータを外部化することで、独自のデータとデータアクセスを維持する必要があります。
これを達成する方法についてのアイデアはありますか?
c# - CSLA フレームワーク
CSLA.NETフレームワークでは、 CanReadPropertyメソッドの目的は何ですか?
unit-testing - CSLA 非同期検証ルールの単体テスト
CSLA Business Base ステレオタイプ クラスの検証ルールがあります。検証ルールには非同期コールバック ラムダ式が含まれているため、検証ルールを単体テストする方法がわかりません。コード例を次に示します。
次のようなテストでこれをテストしたいと思います。
ただし、テスト Assert は非同期コールバックの前に実行されます。これは UnitDriven が役立つものですか? 私はそれを見てきましたが、このシナリオでそれを使用する方法がわかりません。
ありがとう、トム
c# - マルチスレッドCSLA.NET
ある時点でマルチスレッド化したいプログラムがあります。ビジネスルールにはCSLAを使用しています。プログラムの1つの場所で、BusinessListオブジェクトを反復処理し、一度に1行ずつデータに対して健全性チェックを実行しています。行数を約1万行に増やすと、プロセスの実行に時間がかかります(約1分)。当然、これは少しのTPLを使用して、これをマルチスレッドにするのに最適な場所のように聞こえます。
私は何年にもわたってかなりの量のマルチスレッド作業を行ってきたので、シングルスレッドコードからマルチスレッドコードに切り替える際の落とし穴を理解しています。CSLAルーチン自体の中でコードが爆撃されたことに驚きました。CSLAPropertyInfoクラスの背後にあるコードに関連しているようです。
すべてのビジネスオブジェクトプロパティは次のように定義されています。
マルチスレッドとCSLAについて知っておくべきことはありますか?書面による文書に記載されていない警告はありますか(現時点では何も見つかりません)。
- 編集 - -
ところで:すべての行をConcurrentBagにスローし、バッグが空になるまでバッグからオブジェクトを取得する5つほどのタスクを生成することで、マルチスレッドを実装した方法。したがって、問題は私のコードにあるとは思いません。
csla - PropertyInfoManager が FieldManager のように BusinessBase に含まれていないのはなぜですか?
FieldManager が BusinessBase 内で保護されたプロパティとして公開されていることは知っています。PropertyInfoManager が同じ方法でセットアップされないのはなぜですか? 私が収集できるものから、PropertyInfoManger はタイプの辞書と各タイプの PropertyInfo のリストを保持しています。FieldManager の動作と同様に、PropertyInfo のリストを BusinessBase 内に保持する方が簡単に思えます。登録されている PropertyInfo をそれらが属する Type にリンクするために、PropertyInfoManager で多くの作業が行われます。
これには理由があると確信していますが、私はそれを見ていないか、十分に理解していません。私は CSLA について、そしてなぜ物事がそのように構築されたのかについてもっと学ぼうとしています。
c# - SqlCommand を使用した戻り値
SQL 2008 サーバーでストアド プロシージャの結果セットと戻り値を取得しようとしています。SQL Management Studio で proc を実行すると、結果セットと戻り値が得られます。
しかし、C# 4.0 で値を取得しようとすると、パラメーターの値が null になります。ここに私のC#コードがあります:
Result.Value.TotalResults = (int)cm.Parameters["@ReturnValue"].Value; を呼び出す最後の行。Value が null の場所です。私が見つけたすべてのチュートリアルまたは投稿では、すべてを正しく行っているようです。この時点で、何か小さなものが欠けているだけで、別の目が必要だと思います. また、MSサイトで見つけた1つの投稿が必要だと言ったので、他のすべての前に戻りパラメーターを設定しようとしましたが、どこにあるかに関係なく、nullを返します。
c# - ドメイン モデリングのアドバイスが必要 - できれば一般的なシナリオ
お時間をいただきありがとうございます。
私たちは CSLA 3.5.1 を使用していますが、最終的には、この問題は CSLA とはあまり関係がないかもしれません。
私の会社は、よくあるモデリング エラーへの道のりを長い道のりを歩んできましたが、ついにそれに直面しなければなりません。問題を明確にするために、以下のドメイン オブジェクトを簡略化しました。
そのように定義された 3 つのクラスがあります。
クラス Person : ビジネスベース
クラス受講生:人
クラスの先生:人
ORM に NHibernate を使用しており、PersonID を派生キーとして使用して、マッピング (Person、Student、および Teacher テーブルがあります) で Student クラスと Teacher クラスが Person のサブクラスに結合されています。
問題は、ご想像のとおり、学生が教師にもなり得る状況になったことです。現在のオブジェクト モデルとデータ モデルでは、すでに教師である生徒を追加しようとすると、またはその逆の場合に主キー違反が発生します。
質問 1: この状況を防ぐために、新しいレコードを保存する前に、ビジネス オブジェクトに対して実行できる CSLA マジックはありますか?
そうでなければ...
この問題を調査する中で、私はそれを解決するための 2 つの提案を見てきました。1 つ目は、継承よりも構成を優先することです。私の理解では、これは Student と Teacher がそれぞれ Person プロパティを含むことを意味します。
質問 2: これを機能させるには、Student テーブルと Teacher テーブルに Person テーブルへの外部キーが必要であると想定するのは正しいですか? 私はこの解決策を完全には理解していないと思います。何らかのガイダンスが必要です。
2 番目の解決策は、生徒と教師を、特定の人物が果たす役割として考えることです。私が見たところによると、Person クラスには Roles コレクションが必要であり、リンク テーブル (PersonRoles?) を使用して Student テーブルと Teacher テーブルのレコードを Person にマップします。
質問 3: Role 基本クラスと PersonRoles テーブルはどのように見えますか? Student と Teacher のサブクラスには、適切なプロパティだけが含まれていると思います。これは正しいです?
解決策について何か意見はありますか?誰かがウェブ上で肉付けされた例を見つけることができれば、私はそれを見てみたい.
ありがとう、
意思。
winforms - CSLA、BusinessCollectionBase、およびITypedList
.NET 2.0以前のCSLAでモデル化されたビジネスオブジェクトを使用しているクライアント向けに、大規模なWinformsプロジェクトに取り組んでいます。新しいバージョンのCSLAにアップグレードすることはできません。私のクライアントはCodeSmithを使用して、データベーステーブルから「ベース」のCSLAスタイルのビジネスオブジェクトを生成します。すべてのビジネスオブジェクトには、対応する「リスト」クラスが付属しています。
生成されたListクラスはを実装していないため、私が遭遇した問題の1つはWinformsコントロールへのバインドITypedList
です。クライアントから、Listクラスを拡張して自分で実装できると言われましたが(以下のコードスニペットが提供されています)、かなりの数のビジネスオブジェクトを処理しており、リストの1つを拡張するたびにDRYに違反しています。実装するクラスITypedList
。私はすべての拡張リストクラスで次のコードを使用しています。
CreateContent
リストがコレクションであるアイテムの新しいインスタンスを返すだけです。
私は、継承を使用して各リストクラス拡張で同じコードが重複しないようにする方法があるかどうかを理解しようとしていますが、多重継承なしでそれを行う方法を理解していません。とにかく可能です。ListExtensionBase
を実装するクラスを作成した場合ITypedList
、拡張クラスは両方から継承できずListExtensionBase
、上記の例ではSomeItemListBase
。ジェネリックパラメーターを使用して基本クラスを作成すると、すべての基本クラスメンバーに直接アクセスできなくなります。私SomeItemListBase
は生成方法を制御できず、ビジネスオブジェクトフレームワークをそのまま使用するように指示されています。ITypedList
すべてのリスト拡張機能に同じコードを使用して実装する方法はありますか?実装ごとに同じコードを使用する必要がありますか、それともITypedList
実装は拡張機能ごとに異なりますか?