代码之家  ›  专栏  ›  技术社区  ›  user7116

提醒图书馆用户状态不一致

  •  3
  • user7116  · 技术社区  · 16 年前

    // Simplistic look at the AddRange operation
    void AddRange(IEnumerable<ChildType> range)
    {
        foreach (var value in range)
        {
            this.NativeAdd(value);
        }
    }
    
    // Simplistic look at the Delete operation
    void Delete(ParentType value)
    {
        foreach (var child in value.Children)
        {
            this.NativeDelete(child);
        }
    
        this.NativeDelete(value);
    }
    

    void NativeDelete(ChildType child)
    {
        StatusCode status = StatusCode.NoError;
        NativeMethods.DeleteChild(this.id, child.Id, out status);
    
        if (status != StatusCode.NoError)
        {
            throw new LibraryException(this, child, status);
        }
    }
    

    更新:

    3 回复  |  直到 16 年前
        1
  •  2
  •   casperOne    16 年前

    如果没有真正的两阶段提交支持(即事务管理器),3是不可能的。如果发生错误,手动回滚只会让你陷入更不一致的状态。

    真的

        2
  •  1
  •   peterchen    16 年前

    在这种情况下,(2):提供所有信息,以便调用者可以将信息传递给用户,或日志文件,或一些统计数据,而无需大量工作。

    根据文件大小,您可以通过处理副本来使更改准原子化。至少,用户可能希望有一种简单的方法来回滚到上次保存。

        3
  •  1
  •   Reed Copsey    16 年前

    这将提供一个更有意义的异常,您可以控制它。没有理由强迫你的最终用户理解一些奇怪的状态代码等。至少这样,事情的经过和原因就会很明显了。

    推荐文章