- - PR -
DB関連クラスの作成方法(ORマッピングなど)
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-01-11 22:23
はじめまして。
C#でDBを読み込むアプリケーションを作成しようとしています。 通常であれば、SQLを書いてデータを取ってくると思うのですが わざわざ、DB層にあたる永続化クラスを手で書くのは大変だなぁと思いました。 JavaではJDOやCMP(EJB)といったアーキテクチャが用意されていますが .NETにはそういうOR(Object-Relation)マッピングする 仕組みは用意されていないのでしょうか? 皆さんはどのように開発されているのでしょうか。 良いアイデア等あれば教えてください。 |
|
投稿日時: 2004-01-12 18:35
DB層にあたる永続化クラスとしてどのようなものを
想定されているのでしょうか? DataSetでは考えているものと違うのでしょうか。 |
|
投稿日時: 2004-01-20 03:15
返事が遅くなりました。
DataSetはDBにアクセスする汎用的なクラスですよね。 私が探している永続化クラスというのは、 テーブル1つにつき1つ(以上)作られるようなクラスです。 ------------------------- EmployeeID int 4 LastName nvarchar 20 FirstName nvarchar 10 BirthDate datetime 8 ------------------------- たとえば、上記のEmployeesというテーブルを例にとれば、 @データ挿入[Insert] Employee emp = new Employee(); //新規レコードの作成 emp.setLastName("田中"); emp.setFirstName("洋介"); emp.setBirthDaty(1975/01/19); emp.Store(); //保存 Aデータ取り出し[Select] Employee emp = new Employee() emp.LoadByKey(27); //IDでDBから呼び出し Form1.txtName = emp.getLastName() + emp.getFirstName(); こんな感じでわざわざSQLを書かなくても CRUDが簡単にできるEmployeeクラスを 自動生成してくれるツール等がないかと思ったのです。 やはり、ないんでしょうか。。 |
|
投稿日時: 2004-01-20 09:56
Employeesというテーブルが既に存在しているなら
デザイナでEmployeesテーブルにアクセスするDataAdapterを作成して DataAdapterからDataSetの派生クラスを作成するとそのDataSetの中に EmployeesというDataTableの派生クラスが作成されます。 DataAdapterを作成するときにSelect条件のSQLは設定しなくてはいけないのですが これではだめですか? もしくは新規DataSetをプロジェクトに追加してEmployeesのスキーマを自分で登録しても DataSetの派生クラスとEmployeesというDataTableの派生クラスが作成されます。 DataSetはデータの集まりを表すクラスでDBにアクセスするのはDataAdapterクラスです。 [ メッセージ編集済み 編集者: ゆうじゅん 編集日時 2004-01-20 10:03 ] |
|
投稿日時: 2004-01-20 10:11
ソリューションエクスプローラで
プロジェクトファイルを選択して右クリックし @[新規項目の追加]をクリック A[データセット]を選択し Bサーバエクスプローラ上に表示されているテーブルをドラッグ&ドロップし C[保存]すると、 求めているクラスが生成されます。 ただし、ゆうじゅんさんの発言にもあるとおり、実際にデータを取得したり更新したりする作業はDataAdapterの領分なので、DataAdapter作成時にSQLの設定は必要です。 |
|
投稿日時: 2004-01-20 10:32
>Bサーバエクスプローラ上に表示されているテーブルをドラッグ&ドロップし
これは知りませんでした。 勉強になりました。ありがとうございます。 |
|
投稿日時: 2004-01-26 16:37
こんにちわ。
厳密にいう、JavaのOJBのようなブリッジは無いと認識してます。 私は、基本的なDBコントローラコンポーネントを用意してOJBのようなインターフェースを 実装させて使用しています。 よく使用するテーブル等で、メンテナンスに使用したり、いろいろControl内で 業務ロジックを実装する場合は、このコンポーネントを使用しています。 #このスレッドの上部によくcache'の広告が入ってますが、 #OODBなのですが、ちゃんこさんの希望のDB層にあたる永続化クラスが #実装されています。JAVA+OJBを使用してる方はかなり使いやすいDBだと。。 #私は好きですが、M言語と製品版の高価さがネックですw |
|
投稿日時: 2004-01-26 17:29
FormのコントロールオブジェクトとDataSet(実際にはデータベースプロバイダーを抽象化したクラスが介在する)間で、簡単にCRUDするクラスたちを個人的につくりました。
(1行もSQL文を書かずに済みます) MFCを知っている人ならわかるかもしれませんが、DDXのForm<=>DBみたいなかんじに定義できます。 おまけにDBの制約(NOT NULLや文字列の長さ)などのValidationCheckもします。 これを自作したことによって、ASP.NETの開発速度が飛躍的に向上しました。 |