Вместо Response.Redirect вы можете попробовать использовать Server.Transfer, если вы собираетесь перенести пользователя на другую страницу.
Подробнее см. В разница между Server.Transfer и Response.Redirect?
CustomerId помогают, однозначно определяет строку мимо @Id? Я действительно не следовал, "триггеры" укусили, так как предикат, используемый для обновления, не известен триггером. Или Вы действительно хотите повторно обновить CustomerId каждый раз, когда (обнаруживаемый от UPDATE(...)
в триггере)
Самая легкая опция состоит в том, чтобы сделать это как обновления объекта:
var qry = from product in model.Products
where Id == @Id && CustomerId == @CustomerId
select product;
foreach(Product p in qry) {
p.Name = @Name;
}
model.SaveChanges(); // or whatever the method is in EF
Если Вы знаете об ожидании одной записи Вы могли бы использовать:
Product prod = (from product in model.Products
where Id == @Id && CustomerId == @CustomerId
select product).Single();
prod.Name = @Name;
mode.SaveChanges(); // ditto
Вы могли бы также смочь записать это как SQL объекта, но я не уверен, что обеспокоился бы, лично... (обновление: я только что проверил, и я не думаю, что SQL объекта включает DML, таким образом, не, Вы не можете - необходимо было бы использовать или вышеупомянутое или регулярный SQL command/SPROC),
Один путь состоял бы в том, чтобы использовать сохраненный proc, чтобы сделать обновление. Это дает Вам полный контроль над SQL.
Иначе должен добавить CustomerId к ключу объекта.