[英]Using Linq to Sql, does not update, but does not throw exception
运行.net 2008,asp.net,Linq to sql,sql server 2008 express
Foo f = db.Foo.First(x => x.ID == id);
f.IsValid = true;
db.SubmitChanges();
我有一个非常基本的表,它有几个字段,没有FK约束。 当我调用.SubmitChanges()时,没有数据保存,但没有抛出任何错误。 有任何想法吗?
不使用任何显式事务范围,字段不会自动生成,并且服务器上没有触发器。
抛开Tyop,首先要尝试设置db.Log = Console.Out;
查看是否有任何TSQL问题(或更好:运行SQL跟踪)。 如果没有发送任何东西,那么IsValid
可能已经是真的 - 它不会重新保存这些更改,除非必须( 除非你强制它 )。
不太可能,您可能不小心关闭了对象跟踪( db.ObjectTrackingEnabled
)。
其他常见错误包括:
Complete()
使用时TransactionScope
(如果你使用 TransactionScope
) 我还假设 IsValid
实际上是一个db-mapping属性(它们不一定是)
您需要在f
上设置IsValid
而不在x
。
Foo f = db.Foo.First(x => x.ID == id);
f.IsValid = true;
db.SubmitChanges();
如果您使用的话,请记得在TransactionScope
上调用Complete
。
IsValid是否在设计器中标记为AutoGenerated字段? 如果是这样,您所做的任何更改都不会传播回服务器。 此外,您是否有可能在更新时运行的数据库触发器,而不是插入,即将其设置为默认值0(false)?
事实证明,自从我上次使用此应用程序以来,主键已从数据库中删除。 当我最近重新生成.dbml时,它生成时没有主键。 将其添加回来已经解决了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.