【问题标题】:Inherited classes returning different values继承的类返回不同的值
【发布时间】:2023-03-29 16:21:01
【问题描述】:

这更像是一个概念问题。

我有一个名为“RawReader”的基类。

它为类建立框架以继承它并在特定数据系统中读取。

例如,我想要一个应用程序以已知格式的 FoxPro 数据库、CSV 文件或 SQL 数据库(目前还有大约 8 种格式)读取,然后通过 Web 服务传输它并从中创建一个 SQL 数据库.

我可以使用 CSV、FoxPro、Access、Excel 等来处理一切......很简单。

继承 RawReader 的类,如 RawCSV、RawFoxPro、RawAccess 都返回一个包含数据集作为成员之一的结构。数据集包含来自原始系统的数据。 Web 服务接收这个结构并创建 sql 表并将数据加载到其中。这已经被编码并且效果很好。

我现在的问题是用 SQL 阅读。显然,我可以遵循相同的路径,将远程 SQL 数据库读入数据集,如上所述传输数据集等......我的“问题”出现在我觉得将 SQL 数据库传输到数据集,通过 Web 服务传输它,然后尝试以编程方式重新创建 SQL 数据库。我觉得我从 SQL 数据库中丢失了很多细粒度的细节(字段大小、扩展信息等)。在实践中,创建数据库的备份、将其转换为流对象并传输备份似乎更容易转到网络服务。但这就是问题所在……

由于所有类都继承自基类,因此它们被设置为返回一个 DataSet。 hack-ish 方法是将一个流对象添加到返回结构,并在我的 web 服务中添加其他代码来为 SQL 源创建一个特殊情况,但我试图避免这种情况。

对处理此类事情的“正确”方式有什么想法吗?

【问题讨论】:

    标签: .net vb.net web-services architecture


    【解决方案1】:

    我没有真正看到问题,DataColumn、DataTable 和 DataSet 有一个 ExtendedProperties 成员,它允许您附加任意元数据。您的 RawXxx 读者都可以假设数据最终将存储在 SQL 数据库中,因此他们都可以就这些元数据项的命名达成一致。在接收端,您只需处理缺失的元数据项。

    【讨论】:

    • 谢谢,我想我最终会使用它来存储列信息以在接收端进行娱乐。我知道我错过了一些明显的东西!
    猜你喜欢
    • 2017-10-21
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多