バインディング ソースにバインドされたデータ グリッド コントロールを持つ単純な VS 2012 C# フォームがあります。これがバインドされている SQL Server データ ソースには、主キーでもある ID 列 (ID) があります。
この ID フィールドのデータ セット プロパティでは、AutoIncrement = true、AutoIncrement Seed = -1 (デフォルト)、AutoIncrementStep = -1 (デフォルト) を設定しています。
新しい行をデータベースに保存できません。
ツール ストリップを使用して新しいレコードを追加し、ID フィールドをクリアしてから保存アイコンをクリックすると、「IDENTITY INSERT がオフに設定されている場合、テーブル xxxx の ID 列に明示的な値を挿入できません」という例外が発生します。自動生成された値「-1」をフィールドに残すと、同じ例外が発生します。
保存ボタンに添付されたコード:
private void tblClassificationBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
this.Validate();
this.tblClassificationBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.exportComplianceSISVTDataSet);
}
最後のステップを実行すると、例外が発生します。
一部のフォーラム回答者は、回避策として IDENTITY INSERT を「ON」に設定することを推奨していますが、多くの回答者はこれに反対しています。