2009-07-17 7 views
1

私はVisual Studioのクラス図を使っていくつかのクラスを設計しました。今、私はこのデータをORMと他の永続性メカニズムを使用して永続化したいと思います。私は、クラス内のプロパティに基づいてSQLを生成する方法があるかどうか、それが必要なデータベース構造をかなりよく表しているのかどうか疑問に思っています。これは私に手作業によるSQLタイピングの多くを節約してくれるはずです。1つのクラスのデータベーススキーマを生成する必要がありますか?

永続性を実際の「ドメインレイヤー」から切り離したいので(私はこの名前が正しいかどうかはわかりません)、データベースモデルから始めませんでした。

ORMマッパー(LLBLGen)は、このスキーマに基づいてコードを生成することができ、生成されたオブジェクトをパーシスタンスインターフェイスにマップするだけで済みます。

いいアイデアですか、私は間違った経路にいるのですか?

私は仕事(MindScape LightSpeed)を行うようなツールを見つけましたが、残念ながらVS2008でしか利用できません。

答えて

1

悪い考えです。クラス設計とデータベース設計は同じではありません。

個人的には、無料のVisual StudioアドインNORMAを使用して概念的なレベルでデザインします。概念モデルからスキーマを生成し、クラスを生成することもできます。

私の好みでは、生成するクラスが少し重いですが、XSLTを恐れることがなければ、コード生成をカスタマイズすることができます。

オブジェクトロールモデリングの性質上、モデルに設定する制約を使用して、データベーススキーマと「クラス」モデルの両方を推測することができます。

+0

ノーマにお試しいただきます、ありがとうございます。 –

1

によって異なります。プロジェクトが小さく、締め切りが短い場合。確かに。しかし、生成されたコードは手書きコードよりもほとんど常に保守が容易ではありません。これは、データベーススキーマの生成でも同じです。あなたのプロジェクトの範囲を見てください。たぶん、データベースを生成し、それがどのように見えるかを確認してください。それで自分のために決めてください。あなたの次のプロジェクトを再評価してください。 1つのサイズはすべてに適合しません。

+0

これは実際には比較的小さなデータベーススキーマの小さなプロジェクトです。どのようにこれを行う上の任意のアイデア? (私は反射を使って自分自身でそれを行うことができましたが、時間が節約されることはありませんでした;)) –

+0

私はこれをSparx Enterprise Architectで格安に行いました。クラスをインポートし、Transformコマンドを使用してクラスをDDLに変換します。これがワンタイムハッキングの場合は試用版を入手してください。 –

+0

私は自分のソリューションを作成しようとして、第三者のORMを使っています。 LLBLGenは悪い選択ではありません。 NHibernateを使用することもできます。 –

4

ドメインモデルクラスからデータベーススキーマを生成できる多くのORMがあります。さらに、このような開発のために特別に設計されたORMもあります。 "モデルファースト"または"コードファースト"という概念があり、LINQがSQLに取って代わって以来、データベースアプリケーション開発の未来だと思う人もいます。例えば、次のバージョンのEntity Frameworkはこのコンセプトを完全にサポートします。 DataObjects.Netを試すことをお勧めします。データベーススキーマを自動的に生成およびアップグレードし、LINQクエリをサポートします。

+0

あなたの説明のためにありがとうアレックス、私もdo.netをチェックアウトします! –

関連する問題