0

私は、MS SQL Server データベース用の単純なユーザークライアント (フロントエンド) に取り組んでいます。

データベース自体は非常に単純で、外部キーのない 8 つのテーブルがあります。

これまでのところ、データベースに接続し、すべてのテーブルとデータをデータセットにロードすることができました。複数の SQL ステートメント (テーブルごとに 1 つ) を持つ単一の文字列を使用してこれを行っています。

 _dbconstrb = new SqlConnectionStringBuilder();
 _dbconstrb.DataSource = ".\local";
 _dbconstrb.InitialCatalog = "mydatabase";


string sql_str = "SELECT * FROM tbl1; SELECT * FROM tbl2; ..."
_dbda = new SqlDataAdapter(sql_str, _sqlcon);
_dbds = new DataSet();
_dbda.Fill(_dbds);

データセットは にバインドされ、bindingsourceこれは のデータソースとして設定されますDataGridView。私はComboBox、ユーザーが 8 つのデータベース テーブルのいずれかを選択できる単純な を使用しています。ユーザーがコンボボックスに変更を加えるたびに、バインディングソースのデータメンバーがコンボボックスから選択されたテーブルに設定されます。これまでのところ、完璧に機能します。ここで、ユーザーは gridview データに変更を加えます (レコードの追加、削除、または変更)。SQLCommandBulider を使用してデータベースを更新したいのですが、これを試しました:

SqlCommandBuilder cmb = new SqlCommandBuilder(_dbda);
int updated = _dbda.Update(_dbds);

ただし、これは最初のテーブル (sql-string で最初に来るテーブル、この場合は tbl1) のデータに対してのみ機能します。フォローされているすべてのテーブルが DataAdapter によって認識されていないようです。これを実現するには、本当に 8 つの DataAdapter (テーブルごとに 1 つ) を使用する必要がありますか?

解決策: 最後に、8 を追加してこれを管理しましたDataApter。ただし、Entity Frameworkこの種のデータ処理には非常に有望に見えます。その点に再び感謝します。

4

1 に答える 1

0

アプリケーションは単純かもしれませんが、すべてのテーブルからデータをロードすることがパフォーマンスの観点から良い考えかどうかはわかりません。エンティティ フレームワークを使用するとhttp://www.asp.net/web-forms/overview/working-with-data-(entity-framework-tutorial)に役立ち 、あなたがやろうとしていることは本当に簡単だと思います。

于 2013-06-13T08:05:38.503 に答える