То, как я это делаю, таково:
Я бы вытащил клиента, который уже существует, как вы, затем обновил бы элемент с соответствующим идентификатором, который вы используете, со значениями, которые вы извлекли из xml. Затем, когда вы вызовете метод datacontext.SubmitChanges()
, он сделает обновление за вас.
Или вы можете использовать метод Attach
, в вашем случае ваш код будет выглядеть примерно так:
customerTable.Attach(customer, existing);
Attach
был создан именно для этого случая.
Редактировать
Почему бы вам не изменить порядок, в котором вы делаете вещи, вместо того, чтобы создать нового клиента, заполнить его, сделать что-то подобное
var results = ctx.Where(c => c.Email == customer.Email);
Customer customer = (results.Any ? results.Single : new Customer)
Затем запросите ваш xml, чтобы заполнить клиента, затем выполните вставку / обновление.