我目前正在开发一个使用SubSonic 2.2的应用程序,并且在更新表格上的一个组合PK列时出现问题。使用SubSonic 2.2更新主键值
我的代码大致是这样的:
foreach (pageItem page in pages) {
page.IdFile = newIdFile;
page.PageNumber = counter;
counter++;
page.Save();
}
这不更新我的纪录。
我的pageItem表包含4列组成PK。我只需要更新其中一个来模拟我将一个页面对象从一个文件移动到另一个文件,以避免创建一个新记录,仅仅复制除了该Id和页码之外的所有相同的值。
当我使用SQL Server Profiler,然后我可以看到下面的代码被发射到DB:
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充分发挥潜力非常感兴趣,所以任何建议都将不胜感激。
问候,
费尔南多
可能不是这种情况,但肯定会考虑进一步使用SubSonic,以避免此类问题。 你知道这些类型的问题是否已经在版本3中解决了吗? – Fervelas 2010-01-09 01:51:12
对不起,我不知道,我还在用2.2 – kevinw 2010-01-09 18:36:31