- - PR -
型指定したDataSetの整理
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-31 12:04
過去にVS2003+Npgsql+PostgreSQLでアプリケーションを作成した際は、Npgsqlではデータベースウィザード類が動作しなかったので、型指定なしのDataSetを用い、必要に応じてコードでColumnを定義したDataTableを利用していました。
今回VS2005に更新したのを機に、MDBで作るアプリケーションでは、データソース構成ウィザードを利用して型指定したDataSetを使おうとしています。 ところが、型指定したDataSetをフォームにポトリ・ペタリでウィザードを利用して作成すると、@型定義(.xsd)ファイルが多数発生して管理しにくい上に、A選択リストのソースになる「hoge区分一覧」のような、プロジェクトの各所で使いまわしできるDataTableの置き場に悩む、Bconnectionを個々に内包するTableAdapterが作られてしまう(なんとなくconnectionの無駄遣いに見える+Transactionが同一のものになるか不安) といった点でアプリケーションの構成に悩んでいます。 単にTableAdapterとかTransactionScopeとか、ADO.NET 2.0についていけていないだけなのですが、型指定したDataSetをお使いの皆さんは、どのようなDataSet+Adapter構成にされているのでしょう。 @は、フォームごとに.xsdファイル(ex. mainFormDataSet.xsd)を作り Aは、プロジェクト単位で.xsdファイル(ex. appNameDataSet.xsd)を作り Bは、TableAdapterを受け入れ、TransactionScopeでトランザクションをかける というのが妥当なんでしょうか。 | ||||||||
|
投稿日時: 2006-05-31 12:32
私は
4.型指定データセットは使わない、ウィザードも使わない、SQLは全部手書き です Connectionは使いまわすので別クラスでDLL化しています | ||||||||
|
投稿日時: 2006-05-31 12:57
非常に疑問です。これはなぜなんでしょう? (;´・ω・`)??? (その後にある2つはわかりますが・・・)
これも疑問です。理由をお聞かせ願えれば幸いです。 (コネクションプーリングがある今、そうする理由がわかりません) | ||||||||
|
投稿日時: 2006-06-01 10:08
めだかさん、ご意見ありがとうございました。
現状の他によい構成も思いつきませんので、そのままやります。 | ||||||||
|
投稿日時: 2006-06-01 10:25
そうですね「データセットを使わない」でなく「型指定データセットを使わない」ですからね。 何か問題があるのか?、とか、こういう場合だと逆に使いにくい、などの理由があるのかな〜?、などと想像は膨らみます。 | ||||||||
|
投稿日時: 2006-06-01 10:52
型指定データセットを使わない理由
ただめんどうなだけというか使えば楽になるの??というのが あまり理解できてないだけかも。 SQLを書いてる時点で型はわかってますのでその都度Castすればいいかなと データ連結もウィザードも使わないので・・・ 逆に使えばこんなに楽になるんだ!というのがあれば教えて欲しいです >Connectionは使いまわすので別クラスでDLL化しています これは間違いでした、接続文字列だけ別クラスで管理しています | ||||||||
|
投稿日時: 2006-06-01 11:13
脱線ネタで長くなりそうなので、この部分だけに反論します。(長くなりそうであれば、別スレッド行きですね) 簡単に言えば、「キャストはない方が良い」です。 CLR の主役は型ですから、型は厳密な方が良いです。(ポリモーフィズムは除く) (ポリモーフィズムを除いた) キャストは「コンパイル解決」できていないわけです。 個人的には、ストアドの結果を DataSet に格納する時に重宝しています。(たいてい、ASP.NET ですが) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-06-01 11:17
NAL-6295です。
型付データセットを利用した場合、 型付データセットを変更すると、それに該当する箇所が 軒並み、コンパイルエラーになるのが、嬉しいですね。 逆に型付じゃないと、コンパイルエラーにならないのが、 ヒューマンエラーを起こす原因となるので怖いです。 |
1