4

私は現在ProAsp.NetMVCを読んでおり、すべてのlinq2sqlエンティティクラスを手動で構築し、それらをlinqマッピング属性でマッピングしています。ただし、(Google検索から)linq 2 sqlについて話している他のすべての人は、すべてのエンティティを構築するためにビジュアルデザイナーを使用しているようです。l2sエンティティを構築するための好ましい方法はどれですか?また、それぞれの長所/短所は何ですか?

これまでに気付いた唯一の違いは、ビジュアルデザイナを使用しているときに継承マッピングを実行できないように見えることです。ただし、MSDNでは実行できるはずなので、VS2010のインターフェイスで継承マッピングが欠落している可能性があります。ただし、サブテーブルデータが必要ない場合に技術的に結合を追加できるため、とにかく継承を使用する必要があるかどうかはわかりません。

PSとして、l2sはスキーマの変更を行わず、スキーマの変更を手動で生成してから、それらをlinq2sqlに複製します。

ありがとう、

4

2 に答える 2

2

私たちはいつもデザイナーを使っていました。確かに、スキーマに変更を加えるたびに、テーブルをデザイナーに再度インポートする必要があるという追加の手順が導入されますが、デザイナーをバイパスした場合に作成する必要のあるコードの量と比較すると、effrotは見劣りすると思います。

また、デザイナが部分クラスを作成することにも注意してください。追加の実装の詳細を含む部分クラスの追加ファイルを作成できます。そうすれば、テーブルがデザイナーで参照されるときに、追加のコードだけが残ります。これを行うのは、クラスに多くのヘルパー関数を追加し、プリミティブ整数FKフィールドをオーバーレイする厳密に型指定された列挙型プロパティを提供するためです。

継承をうまく実現するのは非常に難しいのは事実ですが、そのようなデータレイヤーが必要な場合は、L2Sが最適なソリューションではない可能性があります。私は、データレイヤーをクリーンでシンプルに保ち、L2Sを使用してデータを出し入れしてから、ビジネスレイヤーでより複雑なロジックを実行することを好みます。データ層でオブジェクトの継承などを行う必要がある場合は、EFのようなより高度で複雑なテクノロジーを検討するでしょう。

于 2010-02-14T02:38:23.147 に答える
1

L2Sを使用してアプリケーションフレームワークバックエンド全体を構築しました。私はこれのほとんどを開発しました。私はDBMLデザイナーを使い始めましたが、これが非常に苦痛であることにすぐに気づきました。スキーマを変更するたびに、設計者のテーブルを変更する必要がありました。さらに、デザイナーによって作成されたエンティティはすべて1つのクラスファイルに詰め込まれ、M2M関係のサポートなど、必要なすべての機能を備えていませんでした。ですから、もっと良い方法が欲しいと気付くまで、それほど時間はかかりませんでした。

最終的に、L2Sエンティティを希望どおりに生成する独自のコードジェネレーターを作成しました。また、アプリケーション層で使用される「軽量」のエンティティセットも生成します。これらにはL2S配管がありません。コードジェネレーターは、これらすべてのエンティティとその他のコードをターゲットデータベースから直接作成します。これ以上DBMLはありません!

これは私たちにとって非常にうまく機能しており、私たちのエンティティはまさに私たちが望む方法であり、データベーススキーマが変更されるたびに自動的に生成されます。

于 2010-02-14T02:20:58.517 に答える