我目前正在使用 SubSonic 2.2 开发应用程序,但在更新表格中复合 PK 的列之一时遇到问题。
我的代码大致是这样的:
foreach (pageItem page in pages) {
page.IdFile = newIdFile;
page.PageNumber = counter;
counter++;
page.Save();
}
这不会更新我的记录。
我的 pageItem 表包含构成 PK 的 4 列。我只需要更新其中一个来模拟我正在将页面对象从一个文件移动到另一个文件,以避免创建新记录只是为了复制除该 ID 和页码之外的所有相同值。
当我使用 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 的潜力非常感兴趣,因此将不胜感激任何建议。
问候,
费尔南多