В настоящее время я занимаюсь разработкой приложения с использованием SubSonic 2.2, и у меня возникают проблемы с обновлением одного из столбцов составного ПК в таблице.
Мой код примерно такой:
foreach (pageItem page in pages) {
page.IdFile = newIdFile;
page.PageNumber = counter;
counter++;
page.Save();
}
Это не обновляет мою запись.
Моя таблица pageItem содержит 4 столбца, которые составляют PK. Мне нужно только обновить один из них, чтобы имитировать, что я перемещаю объект страницы из одного файла в другой, чтобы избежать создания новой записи, просто чтобы скопировать практически все те же значения, за исключением этого идентификатора и номера страницы.
Когда я использую профилировщик SQL Server, я вижу, что в БД выдается следующий код:
exec sp_executesql N'UPDATE [dbo].[pageItem] SET [IdFile] = @IdFile, [PageNumber] = @PageNumber WHERE [IdPage] = @IdPage AND [IdCont]
= @IdCont AND [IdExp] = @IdExp AND [IdFile] = @IdFile;
SELECT @IdPage AS id',N'@PageNumber int,@IdPage int,@IdCont int,
@IdExp varchar(1),@IdFile int', @PageNumber=4,@IdPage=329, @IdCont=1, @IdExp='1', @IdFile=156
Итак, в основном моя проблема в том, что в обновлении НЕ используются разные значения для старого и нового ключей IdFile, они оба используют параметр @IdFile.
Существует ли обходной путь, который предпочтительно не предполагает использования CodingHorror, например, который я могу использовать для обновления своих записей? Я не возражаю против использования необработанного оператора SQL, просто я очень заинтересован в том, чтобы использовать SubSonic в полной мере, поэтому любые советы будут высоко оценены.
С уважением,
Fernando