0

この質問は、NHibernate、Subsonic、Linq2SQLなどのORMを使用するプロジェクトでの「最適な使用」シナリオに関するものです。

これらのツールはすべて、基本的なエンティティクラスを生成します。属性があるものとないものがあります。人々はこれらのクラスをビジネスクラスとして使用していますか?または、ORMで生成されたクラスから手動で作成されたビジネスクラスへのデータの大規模なコピーはありますか?

ありがとう。

4

4 に答える 4

5

私は逆に働きがちです。必要な方法でビジネス オブジェクトを作成し、オブジェクトからデータへの NHibernate マッピングを作成します。マッピングに基づいて NHibernate にスキーマを生成させるか、独自のスキーマを作成して、2 つの間のマッピングを作成することができます。Linq2Sql と Entity Framework はこれをサポートしていません。この点について Subsonic と話すことはできません。

私は通常、ビジネス クラスを作成し、データベースをまったく使用せずにアプリケーションを少なくとも部分的に実行します。このようにして、オブジェクトを永続化する方法を決定する前に、アプリケーションが何をすべきか、どのように動作する必要があるかをよりよく理解することができます。

于 2008-12-01T19:49:06.893 に答える
1

言及されているすべてのツールにはいくつかの解決策がありますが、答えはプロジェクトの範囲によって異なります。

これは、少し前に回答したLINQ to SQL に関する同様の質問です。

それが役立つことを願っています!

于 2008-12-01T19:52:46.917 に答える
1

私は通常、エンティティをビジネス レイヤーとプレゼンテーション レイヤーで直接使用します。データ層はエンティティを定義し、ビジネス層はエンティティを操作するか、エンティティのリストを照会し、プレゼンテーション層はエンティティを表示します。

別々のビジネス オブジェクトを作成し、2 つの間でデータをコピーすると、多くの不要なオーバーヘッドが生じると思います。ただし、これを行う必要がある場合は、データをコピーするのではなく、エンティティをラップすることをお勧めします。エンティティを非表示にし、プロパティを使用してメンバーを公開し、動作を変更できます。

于 2008-12-01T20:11:42.713 に答える
1

SubSonic と Linq2Sql は、1 対 1 の orm マッパーです。データベースが正規化されている状況を考えてみましょう。たとえば、従業員情報は 3 つの異なるテーブルに分類されますが、ドメイン モデルでは、1 つのオブジェクト Employee だけが情報を表すようにします。これは、SubSonic と Linq2Sql が失敗する場所です。Hibernate を使用すると、ドメイン オブジェクトを複数のテーブルにマップできます。また、自動生成されたコードから離れたいと思うでしょう。NHibernate を使用すると、独自の POCO (Plain old C# object) ドメインを定義でき、それをデータベース内のテーブルにマップできるさまざまな方法があります。

于 2008-12-04T22:07:19.450 に答える