ObjectDataSource的UpdateMethod 主键为标识列时怎么办?

数据的流 2012-04-29 02:33:48
UpdateMethod最终调用DAL的更新方法,却一直提示出错:无法更新标识列 'id',我又不想把id列改为可编辑的,这个问题该怎么解决呢?
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
数据的流 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

在更新语句中不要写主键id
[/Quote]
我的gridview是这样的

ObjectDataSource指定的是BLL中的更新方法,然后再去调用DAL中的更新方法ContactUpdate
而ContactUpdate方法参数列表中的id参数是不能去掉的(因为必须跟gridview中的绑定列一致)
否则就会出现“ObjectDataSource2”未能找到带参数的非泛型方法的错误

现在我就算把ContactUpdate方法中更新的sql语句中的id删掉依然会提示无法更新标识列 'id'这个错误

public static int ContactUpdate(int id, string name, string email, string phone, string comment, string bygroup)
{
string sql = "update contact set name='"+name+"',email='"+email+"',phone='"+phone +"',comment='"+comment+"',bygroup='"+bygroup+"'";
int flag = DbHelperSQL.ExecuteSql(sql);
return flag;
}

如果把数据库中id列改为可修改的列是能够解决这个问题的,但我现在的id列是标识列,那么这个问题该怎么解决?
数据的流 2012-04-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用楼主 的回复:
UpdateMethod最终调用DAL的更新方法,却一直提示出错:无法更新标识列 'id',我又不想把id列改为可编辑的,这个问题该怎么解决呢?


废掉这种所谓DAL,UpdateMethod直接写个正规的sql语句吧。你编写的这个DAL,连update操作都搞不定,怎么被BLL调用呢?

这个问题是底层的,不要让高层次的程序去负责任修改什么东西。
[/Quote]
问题并非出在我写的DAL里边,ObjectDataSource的UpdateMethod指定的更新方法的参数必须和gridview中绑定列是一致的,在网上找到的参考资料举的例子id列都不为标识列,我想知道id列为标识列时该怎么半。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
UpdateMethod最终调用DAL的更新方法,却一直提示出错:无法更新标识列 'id',我又不想把id列改为可编辑的,这个问题该怎么解决呢?
[/Quote]

废掉这种所谓DAL,UpdateMethod直接写个正规的sql语句吧。你编写的这个DAL,连update操作都搞不定,怎么被BLL调用呢?

这个问题是底层的,不要让高层次的程序去负责任修改什么东西。
  • 打赏
  • 举报
回复
在更新语句中不要写主键id
孟子E章 2012-04-29
  • 打赏
  • 举报
回复
更新的时候把id列去掉,这个列数不用更新的

http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.objectdatasource.updatemethod.aspx

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧