سلام!
فکر کنم اگه فیلد ID را مقدار دهی نکنی حل بشه! اگرم نشد می تونی از کد زیر استفاده کنی(کلک مرغابی)
    Private Sub P(ByVal S As Boolean)
If S Then
Dim p(0) As DataColumn
p(0) = DS.Tables("Main").Columns("ID")
DS.Tables("Main").PrimaryKey = p
Else
DS.Tables("Main").PrimaryKey = Nothing
DS.Tables("Main").Columns("ID").AllowDBNull = True
End If
End Sub
من توی یه برنامه گیر کرده بودم چون ID کلید و Auto number بود. اگه خالی می گذاشتم خطا می گرفت که حق نداری خالی بگذاری! اگر پر می گذاشتم DB خطا می داد که Auto number هست! قبل از Insert فیلد را از کلید بودن در میاوردم و بعد از اینکه کارم تموم شد دوباره کلیدش می کردم. این کد VB هست معادل C#‎‎ اش را خودتان زحمتش را بکشید! البته برای مورد من شاید راه حل منطقی وجود داشت اما.....
موفق باشید