代码之家  ›  专栏  ›  技术社区  ›  Jeffrey Cameron

正在从.NET中的文件验证数据

  •  1
  • Jeffrey Cameron  · 技术社区  · 17 年前

    在我的程序(一个可以编辑和输入数据的控制台应用程序)中,我给用户提供了以多种不同方式提供数据字典的能力:制表符分隔的文本文件、Excel工作簿或数据库。字典由多个(12-15)文件/工作表/表格组成。我正试图想出一种很好的方法,将来自不同来源的数据加载到数据库中。

    到目前为止,我的解决方案是使用一个存储库来隔离各种数据源,并让这些存储库输出我映射到我的域模型上的DTO。我使用构建器模式来控制整个事件序列。

    基本上,每个文件/工作表/表的事件顺序是:

    1. 从存储库中获取DTO
    2. 验证DTO中的信息
    3. 然后
      • 如果数据良好,则映射域实体
      • 否则,保留一个正在运行的错误列表。

    我的问题是:我想知道在哪里最好地验证DTO中的信息?一种可能的解决方案是像这样在DTO上添加接口

    public interface IValidate
    {
        void Validate();
        bool HasErrors { get; }
        IEnumerable<string> GetErrorMessages();
    }
    

    这对DTO来说太重了吗?验证应该在其他地方进行吗?对不起,如果这有点主观。

    1 回复  |  直到 17 年前
        1
  •  1
  •   Daniel Segan    17 年前

    我不能肯定地回答你的问题,因为正如你所说,这个问题似乎是主观的,任何答案最终都是一种意见。听起来你真的在为一个基于DTO的“学术”定义的设计决策而斗争,而不是一些实际的需求。我们都去过那里。

    当遇到类似的情况时,我通常倾向于以最简单和直接的方式执行实现,因为我可以避免复杂的紧密耦合关系和过多的设计。这样,一旦我能够让一切运行,我可以折射,从那里将减少影响。

    总的来说,听起来您正在构建某种ETL系统。我不知道您要处理的平台是什么,但是如果您使用的是SQL Server,您是否看过SQL Server集成服务?它有许多结构来处理诸如Office文档、XML和平面文件之类的数据源。

    不管怎样,祝你斗争顺利。