0

プロトタイプが SQL Server (厳密に型指定されたデータセット) で作成された C# Windows フォーム アプリケーションがあります。最終バージョンでは、アプリケーションは SQL Server、MySQL、または Oracle で動作できる必要があります。

今、プロトタイプからどの部品を再利用できるかを考えています。1. データセット (入力済み) ? 2. テーブルアダプター? (おそらくそうではなく、SQL Server 固有の構文が含まれています) 3. DataGridView へのバインド

最も重要なことは、これらすべてを再実装する必要がある場合、設計時にこれを行う方法はありますか? または、1.型指定されていないデータセットをプログラムで作成する必要がありますか? 2. データ アダプター (またはテーブル アダプター) をプログラムで作成する必要がありますか? はいの場合、どちらですか?3.インターフェースのデータグリッドビューへのバインディングをプログラムで作成する必要がありますか?

おそらく無関係です: 既存のデータベース スキーマからエンティティ モデル (私の知る限り、データベースの独立性を提供します) を作成する場合、これを何らかの方法で使用して、データグリッドビューへのバインディングを作成できますか?

ありがとうございました!

では、Bindings と dataGridViews、および実装したいくつかの追加ロジックを保持するには、生成されたすべての TableAdapter を破棄して手動で記述する必要がありますか? それらを破棄する場合、代わりに DataAdapters を使用する必要がありますか?

これは「本による」アプローチですか?誰かがこのようなことをしましたか?

より一般的には、複数のデータベースで動作するフォーム アプリケーションを作成する必要がある場合、次のようにしますか?どのように?) VS gui C.を介して設計時にそれらをバインドします.他の方法???

アップデート:

では、Bindings と dataGridViews、および実装したいくつかの追加ロジックを保持するには、生成されたすべての TableAdapter を破棄して手動で記述する必要がありますか? それらを破棄する場合、代わりに DataAdapters を使用する必要がありますか?

これは「本による」アプローチですか?誰かがこのようなことをしましたか?

より一般的には、複数のデータベースで動作するフォーム アプリケーションを作成する必要がある場合、次のようにしますか?どのように?) VS gui C.を介して設計時にそれらをバインドします.他の方法???

4

2 に答える 2

3
  1. 型指定されたデータセット/テーブルはデータベースに依存しません。(ただし、デザイナーでアダプターを追加すると、DB 固有になります。デザイナーからアダプターを使用しないでください。
  2. アダプターはデータベースに依存しません。
  3. データバインディングはデータベースに依存しません。ただし、アダプターを自動的に追加するドラッグアンドドロップデータバインディングに注意してください


私のアドバイス:

  • データセット デザイナーからアダプターを削除する
  • テーブルを取得/埋めるメソッドを持つ単純なクラスを使用して、独自のリポジトリ/アダプターを書き直します。したがって、生成されたアダプターの代わりにそれらを使用します。これらのクラスは DB 固有にすることができます。たとえば、PersonRepositorySqlServer、PersonRepositoryMySql. または、コンストラクターで db-type を指定して、可能な限り SQL を再利用することもできます。
  • フォームでアダプターを使用した場合は、それらを削除してください。データセットの入力をハンドコーディングする

残りの質問に答えるために私がいつもしていること

  • 型指定されたデータセットを使用しますが、アダプターではなくテーブルを作成するだけです
  • デザイナーが混乱することがあるので、通常はデータバインディングをコーディングしますが、これはデータベースに依存しない必要はありません
  • アダプターを使用してデータテーブルを入力/取得/更新する独自のリポジトリを作成します。しかし、私はそれらを手作業でコーディングしています。ちなみに、型指定されたデータテーブルがあれば、更新/挿入/削除/塗りつぶしステートメントを自動的に生成するのはかなり簡単です..



アダプターの書き換えは難しそうに見えますが、実際にはかなり実行可能です。

于 2009-06-29T17:20:53.937 に答える
2

多くの質問がありますが、ここにいくつかの答えがあります:

  • データセットは DB に依存しません。型付きデータセットもおそらく同様です。
  • DataAdapter は、DB と対話するための SQL が含まれているため、DB に依存しています。
  • 基本的な ADO.NET の概念 (IDbConnection、IDbCommand など) を使用して、ベンダーに依存せずに動作する抽象化と可能性があります。
  • また、プレーンな古い c# オブジェクトを BindingSource およびその仲間にバインドすることもできます。このルートをたどる場合は、プロトタイプを作成したほとんどすべてを捨てる準備をしてください。「エンティティ」と DB の間で変換できるフレームワークが必要になります。エンティティの制限と、DB の独立性がどのように見えるかは、そのフレームワークによって異なります。
于 2009-06-29T12:05:05.323 に答える