-質問を別のより単純な形式に変更しました-
このコードを確認してください:
「与えられたエラー」 エラー:
アップデートで TableMapping['Table'] または DataTable 'Table' が見つかりません。
DataSet は厳密に型指定されています。DataTable "dtNew" があります [リスト "ListProducts" から作成されています (ここは関係ありません!)]
データベース内の 1 つの列の名前がリストのフィールドと異なります: "Title" は次の列にマップする必要があります: "TitleInDb"
SqlCeDataAdapter Adapter;
DsProducts Ds1Products ; // Strongly Typed
DataTable dtNew = new DataTable("Products");
DataColumn dc;
DataRow[] updRows;
// Fields : Name , Title, Price
dc = new DataColumn("Name", typeof(string));
dtNew.Columns.Add(dc);
dc = new DataColumn("TitleInDb", typeof(string)); // The difference is by a reason
dtNew.Columns.Add(dc);
dc = new DataColumn("Price", typeof(string));
dtNew.Columns.Add(dc);
dtNew = updRows.CopyToDataTable();
Ds1Products.Tables.Add(dtNew);
// The Problems appear here :
// The Iteration is just for debugging phase and watching the changes which the columns are same
as before
foreach (var col in dtNew.Columns)
{
Console.WriteLine(col.ToString());
Console.WriteLine(col.GetType());
}
// New Table is there, But here will come the Error
Adapter.Update(Ds1Products);
これを実行し、新しい列を反復処理すると、その時点で削除されるべきだと思っていた "Products" テーブルに変更がないことがわかります。また、新しいテーブルの名前"dtNew"
は"table1"
追記事項 : Sql Compact 3.5 を使用してい ます コードは単なるコードの一部です. 正確な問題を示しています !
コードを確認して、これに関するアイデアを提供してください。更新されたテーブル (または DataRows[] ) に基づいてデータベース全体を作成しようとしています。
編集: * DataSet 内の DataTable を置き換えます: * 最初の DataTable を削除し、新しいものを作成して ! に配置することを意味します。簡単に言えませんでした...(コメントに基づく)