Обновите значение первичного ключа, используя SubSonic 2.2 - PullRequest
1 голос
/ 08 января 2010

В настоящее время я занимаюсь разработкой приложения с использованием 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

Ответы [ 3 ]

0 голосов
/ 09 января 2010

Вы должны кодировать эти особые случаи в частичных файлах классов. Посмотрите на сгенерированный код для таблицы с несколькими первичными ключами, чтобы найти проблему. Затем закодируйте все, что необходимо, в не сгенерированном файле. Я не думаю, что v3 имеет дело с составными ключами.

0 голосов
/ 10 января 2010

Subsonic 3 не поддерживает составные первичные ключи. Ссылка: Rob's - авторский - ответ в этом посте: SubSonic 3 и несколько колонок PK

Достоверно уверен, что это не поддерживается в SubSonic 2.

0 голосов
/ 08 января 2010

Композитные ПК могут быть проблемой во многих средах. Я думаю , что SS2.x не очень хорошо их поддерживает, но сейчас не могу найти ссылку, чтобы подтвердить это. Есть ли способ, которым вы можете перестроить свою таблицу, чтобы иметь одно поле PK?

...