none
linq to sql 执行操作失败但集合中仍保留数据的问题 RRS feed

  • 问题

  • 比如我数据库中设置字段是20长度,
    我添加一条30长度的string进去 虽然数据库中没执行添加,但是在linqtosql 的datacontext中缺还保留这 只有我第二次再执行查询的时候才会删除 这该怎么办?

    do u konw ur the one that i love
    2010年6月3日 4:42

答案

  • 一般来说,最好是重新创建一个datacontext - it's by design.

    不过事实上你可以取得原来的ChangeSet然后执行相反的操作,linq会自动把insert和delete合并,最后就什么也不干:

    catch(SqlException)
    {
      foreach(var insertion in dataContext.GetChangeSet().Inserts
        .Where(p => ((TableName)p).ColumnName.Length > 20))
      {
        dataContext.GetTable(insertion.GetType()).DeleteOnSubmit(insertion);
      }
      dataContext.SubmitChanges();
    }
    
    但什么都不如在插入之前检查长度。


    Tech Blog: http://gildor.cnblogs.com
    • 已标记为答案 Mog Liang 2010年6月10日 6:58
    2010年6月6日 14:15