读书人

因为查询无法同时更新聚集键和 text、

发布时间: 2012-01-19 20:57:58 作者: rapoo

因为查询无法同时更新聚集键和 text、ntext 或 image 列
我的数据库有
CREATE TABLE [dbo].[NewsArticle] (
[ArticleID] [uniqueidentifier] NOT NULL ,
[Title] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Content] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
[Keywords] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[CreatorID] [uniqueidentifier] NOT NULL ,
[CreateTime] [datetime] NOT NULL ,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

我产生一个强实体DataSet,但是这个数据适配器的Update语句中,

this._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[NewsArticle] SET [ArticleID] = @ArticleID, [Title] = @Title, [Content] = @Content, [Keywords] = @Keywords, [CreatorID] = @CreatorID, [CreateTime] = @CreateTime WHERE (([ArticleID] = @Original_ArticleID) AND ([Title] = @Original_Title) AND ((@IsNull_Keywords = 1 AND [Keywords] IS NULL) OR ([Keywords] = @Original_Keywords)) AND ([CreatorID] = @Original_CreatorID) AND ([CreateTime] = @Original_CreateTime) ;
SELECT ArticleID, Title, Content, Keywords, CreatorID, CreateTime FROM NewsArticle WHERE (ArticleID = @ArticleID) ";


在调用时,会产生一个异常:
因为查询无法同时更新聚集键和 text、ntext 或 image 列。

但是这个语句又是自动生成的,我又不好改。
请问大家有什么好的解决方法。

[解决办法]
那手写 SQL 来分步更新吧
呵呵
[解决办法]
要不试试多写几句SQL
SQL 来分步更新
[解决办法]
你将聚焦索引取消试试看,还有这样的异常吗?
[解决办法]
"SET [ArticleID] = @ArticleID,... "把主键更新去掉就好了。
[解决办法]
含有类似无法在查询中看到的列最好的还是调用Adapter.UpdateDataSet

读书人网 >C#

热点推荐