タグ付けされた質問 「entities」


30
なぜエンティティオブジェクトが必要なのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する 現在受け入れられているエンタープライズアプリケーション設計パラダイムのメリットについて、正直で思慮深い議論が必要です。 エンティティオブジェクトが存在する必要があるとは思いません。 エンティティオブジェクトとは、「個人」、「アカウント」、「注文」など、アプリケーションのために構築する傾向がある典型的なものを意味します。 私の現在の設計哲学はこれです: すべてのデータベースアクセスは、ストアドプロシージャを介して実行する必要があります。 データが必要なときはいつでも、ストアドプロシージャを呼び出して、SqlDataReaderまたはDataTableの行を反復処理します (注:Java EEを使用してエンタープライズアプリケーションも構築しました。Javaの人は、.NETの例を同等のものに置き換えてください) 私は反OOではありません。エンティティではなく、さまざまな目的で多くのクラスを作成します。私が書くクラスの大部分は静的ヘルパークラスであることを認めます。 私はおもちゃを作っていません。複数のマシンに展開された大規模で大量のトランザクションアプリケーションについて話している。Webアプリケーション、Windowsサービス、Webサービス、b2bインタラクション、という名前を付けます。 ORマッパーを使用しました。いくつか書いた。私はJava EEスタック、CSLA、および他のいくつかの同等のものを使用しました。私はそれらを使用しただけでなく、本番環境でこれらのアプリケーションを積極的に開発および保守しました。 私は、エンティティオブジェクトは、私たちの邪魔になっていることを戦いテストされたという結論になってきた、と私たちの生活は次のようになりますので、それらなしではるかに簡単。 この単純な例を考えてみましょう。正しく機能していないアプリケーションの特定のページに関するサポートコールがあり、フィールドの1つが本来のように永続化されていない可能性があります。私のモデルでは、問題を見つけるために割り当てられた開発者がちょうど3つのファイルを開きます。ASPX、ASPX.CS、およびストアドプロシージャを含むSQLファイル。この問題は、ストアード・プロシージャー呼び出しのパラメーターが欠落している可能性があるため、解決に数分かかります。しかし、どのエンティティモデルでも、必ずデバッガを起動し、コードをステップ実行し始めると、Visual Studioで15〜20個のファイルが開かれることになります。スタックの一番下に降りるまでに、開始した場所を忘れてしまいました。頭の中にあるのは、一度に多くの物だけです。ソフトウェアは、不要なレイヤーを追加することなく、非常に複雑です。 開発の複雑さとトラブルシューティングは、私の不満の片側にすぎません。 次に、スケーラビリティについて話しましょう。 開発者は、データベースと対話するコードを作成または変更するたびに、データベースへの正確な影響を徹底的に分析する必要があることを理解していますか?開発コピーだけでなく、本番を模倣しているので、オブジェクトに必要な追加の列が現在のクエリプランを無効にし、1秒で実行されていたレポートが2分で完了していることがわかります。選択リストに単一の列を追加したためですか?そして、現在必要なインデックスが非常に大きいため、DBAがファイルの物理レイアウトを変更する必要があることがわかりました。 抽象化によって物理データストアから離れすぎてしまうと、拡張が必要な​​アプリケーションで大混乱が発生します。 私は熱狂的ではありません。Linq to Sql、ADO.NET EF、Hibernate、Java EEなどへの強いプッシュがあるので、私が間違っていると私は確信している可能性があります。それが何であるか、なぜ私は自分の考えを変える必要があるのか​​を本当に知りたいのです。 [編集] この質問が再び突然アクティブになったようです。新しいコメント機能が追加されたので、いくつかの回答に直接コメントしました。お返事ありがとうございます。これは健全な議論だと思います。 おそらく、私がエンタープライズアプリケーションについて話していることをもっと明確にすべきでした。たとえば、誰かのデスクトップやモバイルアプリで実行されているゲームについてはコメントできません。 いくつかの同様の答えに対応して私がここで一番上に置かなければならないことの1つは、エンティティ/ ORMに移行する理由として、直交性と懸念の分離がよく引用されます。ストアドプロシージャは、私が考えることができる懸念の分離の最良の例です。ストアドプロシージャ以外のデータベースへのアクセスをすべて許可しない場合は、理論的にはデータモデル全体を再設計し、ストアドプロシージャの入力と出力を維持している限り、コードを壊さないようにすることができます。これらは契約によるプログラミングの完璧な例です( "select *"を避けて結果セットを文書化する限り)。 業界に長く住んでいて、長命のアプリケーションを扱ってきた人に聞いてください。データベースが存続している間に、アプリケーションとUIのレイヤーがいくつ消えてしまったのでしょうか。データを取得するためにSQLを生成する4つまたは5つの異なる永続化レイヤーがある場合、データベースのチューニングとリファクタリングはどれほど難しいですか?何も変更できません!ORMまたはSQLを生成するコードは、データベースを完全にロックします。
139 sql  database  orm  entities 

8
タイプまたは名前空間名「Objects」は名前空間「System.Data」に存在しません
エンティティ、C#、およびSQL Serverを使用して、n層アプリを作成しています。すべてのDALコンポーネントに共通の基本クラスをいくつか作成しています。この基本クラスでは、エンティティオブジェクトによって継承されたObjectContext基本クラスの接続状態を処理します。 コンパイルすると、次のエラーがスローされます。 タイプまたは名前空間名「Objects」が名前空間「System.Data」に存在しません(アセンブリ参照がありませんか?) また、usingステートメントSystem.Data.Objectsも同じ理由で解決されません。 アセンブリを参照として追加しようとしましたが、アセンブリ参照の[.NET]タブにそれが見つかりませんでした。 何かご意見は?ありがとう!

3
「LINQ to Entities」、「LINQ to SQL」、「LINQ to Dataset」の違いは何ですか
私はかなり長い間、LINQで働いています。ただし、前述のLINQのフレーバーの実際の違いは少し謎です。 成功した答えには、それらの短い違いが含まれます。各フレーバーの主な目的は何ですか?利点は何ですか?パフォーマンスに影響があります... PS世の中にはたくさんの情報源があることは知っていますが、初心者に特定の目標に向けてどこに向かうべきかを指示する一種の「チートシート」を探しています。
91 c#  sql  linq  dataset  entities 

2
IoCコンテナを使用してエンティティ/ビジネスオブジェクトの依存関係を解決してみませんか?
DIの背後にある概念は理解していますが、さまざまなIoCコンテナーで何ができるかを学んでいます。ほとんどの人がステートレスサービスを接続するためにIoCコンテナーを使用することを提唱しているようですが、エンティティなどのステートフルオブジェクトにそれらを使用するのはどうでしょうか。 それが正しいか間違っているかにかかわらず、私は通常、その動作に外部クラスが必要な場合でも、エンティティに動作を詰め込みます。例: public class Order : IOrder { private string _ShipAddress; private IShipQuoter _ShipQuoter; public Order(IOrderData OrderData, IShipQuoter ShipQuoter) { // OrderData comes from a repository and has the data needed // to construct order _ShipAddress = OrderData.ShipAddress; // etc. _ShipQuoter = ShipQuoter; } private decimal GetShippingRate() { return _ShipQuoter.GetRate(this); …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.