代码之家  ›  专栏  ›  技术社区  ›  Russell Steen

使用linqtosql不会更新,但不会引发异常

  •  3
  • Russell Steen  · 技术社区  · 14 年前

    Foo f = db.Foo.First(x => x.ID == id);
    f.IsValid = true;
    db.SubmitChanges();
    

    我有一个非常基本的表,它有几个字段,没有FK约束。调用.SubmitChanges()时没有保存任何数据,但不会引发错误。有什么想法吗?

    不使用任何显式事务作用域,字段不会自动生成,服务器上也没有触发器。

    4 回复  |  直到 14 年前
        1
  •  4
  •   Community Egal    7 年前

    别说了,首先要做的是 db.Log = Console.Out; 发送 IsValid 已经 是的-它不会重新保存这些更改,除非它必须这样做( unless you force it

    不太可能,您可能意外地关闭了对象跟踪( db.ObjectTrackingEnabled

    其他常见错误包括:

    • 不打电话 Complete() 使用时 TransactionScope (如果你 事务处理范围 )
    • 带数据库 (而不是单独的服务器),签入原始文件(在解决方案中),而不是签入生成输出(通常是/bin/debug或/bin/release)。

    假设 那个 是否有效 实际上是一个db映射属性(它们不必是)

        2
  •  2
  •   Klaus Byskov Pedersen    14 年前

    你需要设置 IsValid f 而不是开着 x .

    Foo f = db.Foo.First(x => x.ID == id); 
    f.IsValid = true; 
    db.SubmitChanges(); 
    

    记得打电话 Complete 在你的 TransactionScope 如果你在用的话。

        3
  •  2
  •   tvanfosson    14 年前

        4
  •  1
  •   Russell Steen    14 年前

    事实证明,自从我上次使用这个应用程序以来,主键已经从数据库中删除了。当我最近重新生成.dbml时,它生成时没有主键。再加上这个,问题就解决了。