2008-08-26 7 views
4

既存のデータベース(LINQ to SQL、Hibernateなど)を操作するデータアクセスレイヤーを作成する方法がいくつか(自動的に)あることは知っています。オブジェクト定義からデータベーステーブルを生成する

  1. 作成するVisioのの「アップデートデータベース」を使用してVisioの
  2. のテーブルを変更/作成:しかし、私は次のようなものの疲れの種類を(と私は物事のより良い方法があるはずと信じて)取得しています/

Wをコンパイル "SQLクラスにLINQ" オブジェクト

  • 従って
  • コードの変更にテーブルをインポートするデータベース
  • を変更オブジェクト/エンティティ定義からデータベーススキーマを生成する方法についての帽子?私はこのようなツールのための良いリファレンスを見つけることができないようです(少なくともいくつかのフレームワークでは何らかのビルトインサポートが期待されます)。

    それは完璧になる場合、私はちょうどでした:

    1. 変更オブジェクト定義
    2. 変更オブジェクトに
    3. コンパイルを操作するコード
    (データベースの変更は自動魔法行われます)
  • 答えて

    1

    これは、Microsofy Entity Frameworkが解決しようとしている問題だと思います。 「コンパイルする(データベースの変更は自動的に実行される)」とは具体的には設計されていませんが、基礎となるデータモデルに大きく依存することなく、ドメインモデルへの変更を処理する問題に取り組んでいます。

    0

    ERwin Data Modelerのような本当に大きな犬のいくつかは、オブジェクトをDBに移動します。あなたは、しかし、製品を買うために大きな金を持っている必要があります。

    1

    Jasonが提案したように、オブジェクトdbが良い選択かもしれません。 db4objectsをご覧ください。

    +0

    これは非常に良い製品です。ほとんど真実であることが良い...まだキャッチを待っている。 –

    +0

    は、オブジェクトデータベースであるため、優れたリレーショナルモデルに基づいていません。 –

    1

    GORMについて説明しました。それはGrailsフレームワークの一部であり、Hibernate(将来的にはJPAかもしれない)と連携するように作られています。私がGrailsを最初に使用していたとき、それは後ろに見えました。テーブルを作成し、フレームワークがデータベーススキーマから足場を生成できるようにするRailsスタイルのワークフローがより快適でした。 GORMはドメインオブジェクトを永続的に保持し、オブジェクトの作成と変更、データベースの作成/更新の管理を行います。これは私がそれに慣れたので今より意味をなさない。あなたが新しいフレームワークを探していない場合にはお気の毒ですが、リリース1.1ではroadmapにあり、GORMをスタンドアロンで利用できるようにしています。

    0

    私は、「主要な」フレームワークのいくつかを掘り起こし続けました.Djangoはまさに私が話していたことをしているようです。それともこのように思われますかscreencast

    誰かがこれについての発言をしていますか?それはうまくいくのですか?

    1

    私たちが独自のフレームワーク(Inon Datamanager)の最初のバージョンをビルドしたとき、私は既存のSQLテーブルを読み込み、そこからJavaオブジェクトを自動生成しました。

    Smalltalkishのバックグラウンドから来た私の同僚が2番目のバージョンを作成したとき、オブジェクトから開始してテーブルを自動生成しました。

    実際には、私が戻ってそれを追加するまで、彼らはSQL部分を完全に忘れていました。しかし、今日では、アプリケーションの起動時にトリガを実行し、オブジェクトモデルを反復し、テーブルとすべての右の列が存在するかどうかを確認し、そうでない場合は作成します。とても便利。

    お気に入りのツールが類似のプロセスをサポートしていない場合は、リレーショナルからオブジェクトへのマッピングが比較的単純であると仮定すると、おそらく2時間以内に書き込むことができます。

    しかし、それはあなたが文化的にオブジェクトの人かデータベースの人かに依存するようですが、あなたはどちらかを信頼できるソースと見なすことができます。

    0

    はい、Djangoはうまくいきます。

    はい、それはあなたがあなたの構造を更新する場合、それは常に既存のテーブルを変更しません

    、手動

    ALTER TABLEを実行する必要があります(Pythonで書かれた)データモデルの定義から、あなたのSQLテーブルを生成します。

    のRuby on Railsは、これらの機能の一層高度なバージョン(Railsの移行を)持っていますが、私はできるだけ多くのフレームワークを好きではない、私はルビーやレールはかなり特異な見つける

    4

    DataObjects.Netをチェック - であるように設計されていますこのケースを正確にサポートします。コードのみ、その他は何もありません。そのschema upgrade layerはおそらくあなたが見つけることができる最も注目されたものであり、実際にはスキーマのアップグレードSQLを完全に抽象化しています。

    product videoを確認してください。スキーマを同期するための追加の操作はありません。スキーマアップグレードサンプルには、この機能の使用目的が示されています。

    +0

    関連の答え:http://stackoverflow.com/questions/1143525/should-can-one-generate-a-database-schema-of-ones-classes/1155339#1155339 –

    +0

    Btw、この製品は本当にあなたを感じることができますオブジェクトデータベースを扱っています。さらに、実際には1つを提供します(現在、メモリ内のデータのみ)。 –

    0

    後半の答えの種類が、ここでは行く:

    私はまったく同じ問題に直面し、それは私の独自のソリューションを書くことになった、だけしかし.NETとSQL Serverでの作業。

  • DBオブジェクト(または要望に応じて)データ・アクセス機能を使用するときに自動的に設定されているソースコードの一部としてCREATEスクリプトを埋め込まれたよう

    • すべてのDBオブジェクトが保持されている:それはbasicalyあなたが記述プロセスを実装しています
    • すべて非テーブルの変更はまた、データベースをアップグレードする際にデータを移行するために特別な注意を必要とするかもしれない
    • テーブルの変更は、(手動で作成)変更スクリプトを介しperformendされると同時に、自動的に(またはリクエスト)が行われます
    • データベースオブジェクトの手動による変更も検出できるので、スキーマの整合性を検証して修正することができます
    • オプションの軽量ORMは、ストアドプロシージャとオブジェクトだけでなく結果セット(複数の場合もあり)をマッピングできます
    • SQLソースファイルを開発データベースと同期させて維持するのに役立ちます。

    データベースを含むライブラリはLGPLライセンスで無料です。

    http://code.google.com/p/bsn-modulestore/

  • 関連する問題