// РЕДАКТИРОВАТЬ: я обновил код, чтобы соответствовать тому, что вы ищете. В SQL Server убедитесь, что ваш столбец первичного ключа таблицы является столбцом идентификаторов, для которого начальное значение и значение приращения установлены в 1.
Когда вы пытаетесь отправить свой класс, НЕ ДОБАВЛЯЙТЕ первичный ключ. Он будет использовать это автоматически.
Исключение будет выдано, если вы попытаетесь вставить строку в таблицу с тем же уникальным идентификатором. Обновления в Linq-To-Sql сложны ... Смотрите мой код ниже. Первая часть потерпит неудачу, но будет захвачена внутри try-catch. Вторая часть - как сделать обновление. Вы должны извлечь его на основе первичного ключа, изменить поля и отправить его. Смотрите этот блог:
http://www.richardbushnell.net/2008/02/18/how-to-update-data-with-linq-to-sql/
class Program
{
static void Main(string[] args)
{
DataClasses1DataContext ctx = new DataClasses1DataContext();
try
{
for (int i = 0; i < 10; i++)
{
ctx.Table_1s.InsertOnSubmit(new Table_1
{
Name = "John"
});
ctx.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict);
}
var list = from i in ctx.Table_1s
select i;
foreach (var item in list)
{
Console.WriteLine(item.Name);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
//OUTPUT: "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
// "John"
}
}