Linq to sql从客户端传回的实体对象attach后更新没效果

5207 2009-09-16 09:48:22
客户端将实体对象传回到服务端,服务端的方法如下:

public void SaveUser(LinqToSql.td_Users user)
{
try
{
LINQContext _db = new LINQContext();
user.user_Time = DateTime.Now;
_db.td_Users.Attach(user);
_db.SubmitChanges();
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}


查看上下文里的对象已经有了,而且数据也是新的,但是SubmitChanges后,没有更新到数据库。真是有点郁闷,不知道是不是实体类没有设置正确导致?我是直接按照设计器里从数据表拖放过来的,并未做修改。
...全文
315 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
5207 2009-09-17
  • 打赏
  • 举报
回复
后经发现是由于表之间的关系约束造成:

在例子中使用了Sql server的 NorthWind数据库,更新Orders表时就会出现问题,原因应该是由于Orders表与多个表有约束关系,比如:Customrs数据表与Orders有约束关系,如果更新时

看来设置还要细细的去调整。
chen_ya_ping 2009-09-16
  • 打赏
  • 举报
回复
attach好像有两个参数的吧。你把后面的那个参数设置true试试
5207 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
在主键列上加上: IsVersion=true
参考
[/Quote]

谢谢回答,主键上已经加上了。而且我将非主键都设置UpdateCheck = never了。还是不行。
现在新增,删除都可以实现。

不知道是不是表之关的关联有问题?
5207 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vwxyzh 的回复:]
attach上去的实体是未修改状态(即使在程序的其它地方已经被修改)
[/Quote]

嗯。谢谢。只不过这个有什么办法让实体变成修改状态呢?
wuyq11 2009-09-16
  • 打赏
  • 举报
回复
在主键列上加上: IsVersion=true
参考
vwxyzh 2009-09-16
  • 打赏
  • 举报
回复
attach上去的实体是未修改状态(即使在程序的其它地方已经被修改)
5207 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chen_ya_ping 的回复:]
attach好像有两个参数的吧。你把后面的那个参数设置true试试
[/Quote]

会有如下提示:如果实体声明了版本成员或者没有更新检查策略,则只能将它附加为没有原始状态的已修改实体。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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