2011-01-05 8 views
3

私は、単純な(多くの制約ではない)テーブルでSQLサーバの準備ができています。今私はテーブルのDALとオブジェクトクラスを生成する必要があります。.NET ORMヘルプが必要

.NET ORM(NHibernateや他のフリーFWのような)はどれくらいのことができますか?基本的には、クラスとdbのアクセス関数を作成する面倒な作業を手伝ってください。私はそれらのオブジェクトクラスのビジネスロジックを記述するのに時間を費やす方がよいでしょう。

後でテーブルを追加/変更するのは簡単でしょうか?私はORMについての概念的な考え方を持っていますが、実際の経験はありません。

答えて

3

Linq to SqlまたはEntity Frameworkを使用すると、クラスとデータアクセス機能を自動生成できます。

データベーステーブルをVisual Studio内からDBML(L2S)またはEDMX(EF)にドラッグアンドドロップすると、メンバーが1対1でカラムにマッピングされたクラスが作成されます。定義した。

Linq to Sql Classes作成またはADO.NET Entity Data Modelは、次の手順に従ってください。

  • あなたのプロジェクトの一つにVisual Studio内で右クリックし
  • 追加=>新しい項目
  • 選択Linq to Sql ClassesまたはADO.NET Entity Data Model
  • この意志をクラスを作成およびカスタマイズするための空白のデザインビューを作成します。
  • ユーザーServer Explorerデータベースへの接続を開く
  • DBMLまたはEDMXキャンバスにテーブルをドラッグ&ドロップし、終了したら保存します。例えば

  • テーブルUserは、テーブルUserが列FirstNameを持っている場合、テーブルUserはそれがIList<Contact> Contacts上に生成されますテーブルContactと関係を持っている場合、それは財産FirstName
  • なっクラスUser
  • なりUserクラスです。これは、あなたが、あなたのクラスを生成するが、変更を行うことができますSQLMetalを使用することができ、あなたのテーブルをマッピングするために、よりカスタマイズされた方法が必要な場合は、生成されたDataContext

内からuser.Contacts.Where(c => c.ContactId == 7000)のようなコードを書くようになります。たとえば、intプロパティをenumsに変換します。


NHibernateも良い選択肢です。

+0

DBMLにドラッグアンドドロップしますか? VSのDBMLのオプションはどこにありますか。 –

+0

アップデートを見る.... – hunter

1

DALを生成するツールはたくさんあります。

SubSonicはORMではありませんが、DALを生成するコード生成ツールです。

Entity FrameworkLinq to SQL(Microsoft製)もあり、DALが生成され、ビジュアルスタジオにデザイン面が表示されます。

DALを再生成する必要があるため、これらのファイルの変更やカスタマイズが失われる可能性があります。

+0

サブソニックはORMです。部分クラスのようなものを正しく使用している場合は、コード側で変更を失うことなくデータベースを変更することができます。 –

1

Linq2SqlEntity frameworkの両方がこれを大いに助けます。テーブルの更新に関するご質問に関して:はい、後でテーブルを更新するのは簡単です。あなたが手ですべてを書いた場合(あなたが手で修正する必要がある場所)よりも、ずっと簡単です。

+0

学習曲線が多いのですか、それとも単に使い始めることができますか?linq2sqlを使ってクラスとDALを生成するにはどうすればいいですか(それはEFよりも簡単です)、それはどんなツールですか? –

+1

@Munish Goyal:学習曲線が非常に険しいとは思わない。はい、ツールがあります。ビジュアルスタジオでテーブルをドラッグ&ドロップするだけです。 「Linq2Sqlデータクラス」ファイルをプロジェクトに追加し、「サーバーエクスプローラ」からテーブルをドラッグするだけです。そのように簡単です。 –

+0

"Linq2Sqlデータクラス"ファイル? .csファイルまたはテンプレート? plは精巧です。 wudは役に立ちます –

0

Nhibernateはすべてのデータアクセスロジックを処理します。 可能なすべての外部キーと主キーを定義することをお勧めします。 複合主キーの代わりに明示主キーを持つ方が簡単です。

オブジェクトクラスを生成するには、T4テンプレートを使用することをお勧めします。オンラインで入手できるさまざまなサンプルテンプレートがあり、あなたが望むものを正確に行うためにあなた自身のものを書くことは比較的簡単です。

これらのオブジェクトクラスをデータコンテナとして使用し、これらのDALクラスを使用する別々のクラスにビジネスロジックを実装することをお勧めします。これにより、基礎となるテーブルが変更された場合にそれらを再生成することが簡単になります。

0

私は少し遅れていますが、NugetとGithubのCocoon ORMは良いです。データアクセスコードを動的に書き込みます。ウェブサイトから以下http://guidelinetech.github.io/cocoon-orm/

機能リスト:

  • データベースフィールドの自動マッピングドメインオブジェクトのプロパティへ
  • AutoCrud自動でストアドプロシージャのパラメータに
  • 自動マッピングドメインオブジェクトのプロパティ(選択)、GETで作成しよう
  • 実行計画とキャッシュフレンドリーであるパラメータ化されたSQLを動的に検査することを動的に作成します。
  • シンプルなd第二回帰
  • Entity Frameworkのと同様の、コードにコード最初の環境での使用のために(私たちのような)本当に偏執
  • 表生成ツールのために使用するために
  • クラス生成ツールをツールをベンチマークATA注釈環境
  • 含まれているComb GUIDまたはシーケンシャルUIDジェネレータを使用して、非整数のシーケンシャルユニークIDを簡単に作成します。 SQL Server 2008の/ 20014分の2012/+およびAzureのSQL(他のTSQLデータベースと実行可能)
  • に対応
  • コクーンORM自体に弱いコピーレフトLGPLライセンス(変化の下で、あなた独自のコードでコクーンORMライブラリを使用する必要があります を共有してください。一緒に脳のことができるように私たちにお知らせください)