4

ORM ツールを購入しています。CodeSmith (現在大幅な割引価格で入手可能) と ORM ツールのどちらを購入するか悩んでいます。

LINQ to SQL は私のリストから外れています。SubSonic 2.x はリストから外れています (SubSonic 3.0 が来ることを知っているので、行き止まりに投資したくありません。NHibernate は LLBLGEN と同じようにやり過ぎのようです。私は EF を簡単に評価しただけですが、すぐには取得できません。暖かくてぼんやりした感じ。

CodeSmith が既製の ORM の合理的な代替手段であると考えるのはおかしいですか? CodeSmith は他の方法で元を取れるでしょうか?

私はどのベンダーともまったく関係がないことに注意してください。これは安易なショットではないので、製品ノイズを生成するためだけの質問です! CodeSmith を ORM ツール (提供されているテンプレート、またはコミュニティで利用可能なテンプレート) として使用することについて、率直なアドバイスや意見を求めています。

4

8 に答える 8

8

実際、hibernate は優れた ORM ツールです。しかし、それはそこで止まります!

コード スミスの機能は、単なるリレーショナル マッピング スタッフ以上のものになる可能性があります。コード スミスを使用して、いくつかの UI フォーム、ビジネス レイヤー (テンプレート)、データ アクセス レイヤー、パターンなどを生成します。しかし、コード スミスと連携するには、システム設計の経験が必要な場合や、私が好まないテンプレートを使用する必要がある場合がありますが、例としては気に入っています。

コード スミスのアプローチには、1 つの特別な欠点があります。最初にデータベースの実装を考慮してシステムを設計する必要があります。今日、オブジェクト分析アプローチでは、人々はデータベース実装の直前にビジネス ロジックとエンティティを実装することに成功しています。彼らはこれを忘れています。

決断は難しいです。私は、Scott W. Ambler、Kent beck、Robert C. Martin などの重要な人物や、開発をスピードアップするために ORM ツールを推奨する The Pragmatic Programmers シリーズの人々を常に読んでいます。彼らによると、ORM ツールの開発者はすべてのデータベースの問題 (プーリング、接続、データベース ベンダーの仕様など) に関心を持っています。したがって、データ アクセス層を設計する必要がある場合は、これらすべての側面も考慮する必要があります。

これらの ORM ツールには過負荷が伴うと思います。これらのツールが低予算のプロジェクトでどのように動作するかはまだわかりません (ホスティング サーバーや共有リソースが良くないという意味です)。私は、経験の浅い開発者が愛するツールを広めようとする際に、このことを考慮に入れていないのを見てきました。しかし、Java プロジェクトでは、hibernate はすでに広く普及しているよく知られたツールです。このテクノロジーを使用して優れたプロジェクトが提供されていることは間違いありませんが、Java 開発者が私たち (.net 開発者) に優れたソリューションの構築方法を教えなければならない人を何度も見てきました。(申し訳ありませんが、認めざるを得ません。)

私がお勧めする唯一のことは、あなたの文脈を考慮することです. 新体制やってんの?あなたはパターンで仕事が必要ですか?このようなコード ジェネレーターと ORM ツールをまとめて検討したことがありますか?

データ アクセス レイヤーだけでなく、ソリューション全体を一度に生成するため、コード スミスを好みます。コード生成は非常に重要であり、Microsoft が Visual Studio.net 2008 などでコード スミスのアプローチを模倣したことは少なくありません。

幸運を

于 2009-05-15T02:54:14.400 に答える
5

NHibernateが進むべき道です。エンタープライズグレードのORMです。また、 FluentNHibernateライブラリの規則ベースの自動構成では、単一の規則に固執する場合(規則を指定するか、デフォルトがあります)、構成は途方もなく簡単です。

NHibernateを使用すると、ドメインオブジェクトは純粋なC#オブジェクトになります。奇妙な基本クラスはありません。変更を加えるたびに更新する必要のあるコード生成ファイルはありません。

于 2009-02-24T20:02:38.010 に答える
5

Code Smith は ORM ではなく、単なるコード ジェネレーター IDE です。

データベースに基づいてコードスミスを使用してDALを生成できますが、それは基本的にDALを動的に生成するというORMを使用する目的(の1つ)を無効にするため、コードを記述する必要はありません。

本当に 2 つを比較しようとしている場合は、生成されるコードを完全に制御できるため、Code smith を使用することで何らかの利点が得られる可能性がありますが、その利点が何が変わるかという欠点を上回るかどうかはわかりません。データベースに基づいて DAL を生成するためのコード スミス テンプレートを作成するのに何ヶ月も費やしています。

次に、データベースに変更を加えたときに何が起こるかを考慮する必要があります。ほとんどの場合、コード スミスを実行してそのたびにビルドする必要があります。優れた ORM を使用すると、データベースの変更をスキーマで構成でき、動的に生成されるため、データベースの変更について (それほど) 心配する必要はありません。

于 2009-02-24T19:43:19.523 に答える
3

私は毎日netTiersを使用しており、気に入っています。ドキュメントは面倒ですが、オフィスでの時間の節約にはなりました。多くの人が生成されるコードの量に不満を持っていますが、私が見た限りでは、生成されるコードは、その多くを手作業でコーディングするよりもはるかに高速です。また、基本的な CRUD に必要なすべての sproc も生成します。それが生成するアクセス方法も非常に優れており、すべての一意のキー、外部キー、および主キーを取得します。

于 2009-05-15T02:58:49.540 に答える
2

Codesmith の使用は有効だと思います。ただし、それを使用するフレームワークを調べる必要があります。 Net Tiersは、優れた DAL をノックアウトするために構築できるアプリケーション フレームワークです。

于 2009-02-24T19:48:14.287 に答える
0

LLblgen のようなものがやり過ぎになるのはなぜですか? 私たちは仕事でそれを使用しており、やや急な学習曲線の後、それは非常に素晴らしいです:)。少なくともそれを試して、冬眠する必要があります。

これがコードスミスと何の関係があるのか​​ はわかりませんが、それはコードジェネレーターです。独自のORMを作成できますが、すでに優れたものがあるため、学習目的でそれを行いたくない限り、時間と労力の価値があるとは思いません. .

于 2009-02-24T20:34:36.873 に答える
0

netTiers と .netMVP を使用します。NetTiers は非常に優れた DAL であり、.netMVP は、UI レベルでの抽象化をサポートするためにリリースしたばかりのフレームワークです。:)

http://community.codesmithtools.com/CodeSmith/m/templates/42499.aspx

于 2010-07-24T17:27:00.783 に答える
-2

私は数年前にLLblgenを使用しました。私が見たものが修正されたことを願っています。渡された主キーを使用して 1 行のデータを選択するために生成されたインライン SQL を調べました。

SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.

本当に、DISTINCT? 私はいつも代わりに店の手続きをするように頼みましたが、プロジェクトリーダーによって撃ち落とされました. 非効率なコードを書くことで、どれだけの時間が節約されたかはわかりません。

于 2012-09-17T19:20:33.937 に答える