因为查询无法同时更新聚集键和 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