首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将XML持久化到数据库?

如何将XML持久化到数据库?
EN

Stack Overflow用户
提问于 2017-12-26 23:50:26
回答 3查看 0关注 0票数 0

我有一个从CSV文件或数据库导入信息并将其导出到XML的应用程序。此XML当前被保存到文件中。但是,由于项目需要,我决定最好将这个XML持久化到数据库中。

目前,我有CSV、XML和SQL存储库,它们处理导入/导出数据。XML存储库将传入对象保存到文件中。目前,它是存储对象到XML的映射的地方,因此它是唯一了解该结构的地方(同样,它们各自结构的其他存储库)。

既然我想将XML存储在数据库中,我就开始质疑这个体系结构。为了对数据库进行插入,XML的结构必须可以从SQL存储库中访问(其他列中的n.b数据可以与XML一起插入到DB中)。这让我想知道XML表示是否应该存储在对象本身、服务层或其他地方。

实现这个问题的解决方案的最佳方法是什么?

更新:对我问题的澄清。XML存储库当前保存到一个文件中。在我看来,这是将XML结构的知识保持在一个错误的水平上,因为那时我在将XML表示保持到我想要的任何介质方面没有灵活性。让对象了解它的XML表示(或CSV表示等)是否很糟糕?是否应该将有关该结构的知识保持在另一个层次,那又是什么层次呢?

EN

回答 3

Stack Overflow用户

发布于 2017-12-27 07:32:22

您不只是将XML存储库更改为有SQL后端吗?Yopur的存储库究竟是什么并不重要,它们只是用来存储和检索数据的“黑匣子”。将XML知识保密在XML存储库中,并将其后端使用SQL。

您可以将其链接到SQL存储库,或者将其保持为单独的。

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 08:03:41

虽然许多数据库支持直接存储XML,但我认为你可以从经验上解决这个问题。如果模式更改,则需要将每条记录更新到新模式。

我建议,如果要将数据存储在DB中,那么将数据存储在一个更易于修改和管理的表中。

此外,你应该询问为什么要将数据存储在数据库中。如果你不打算查询数据,那么将其存储在一个平面文件中也同样好。

我并不是说你做的是错的,而是认真考虑你的需求。

票数 0
EN

Stack Overflow用户

发布于 2017-12-27 09:03:41

如果你希望SQL存储库能够使用现有的XML层,那么我确信可以使用某种基于接口的抽象(Provider/IoC/DI/etc),这样SQL存储库就可以使用XML堆栈,而不必刻意的去了解它。

当然,如果对象模型本身定义了XML结构(通过XmlSerializer),这就更简单了,XML repo变得相当琐碎。

至于知道结构db:它取决于是否需要查询数据库中的数据。如果是这样的话,你可以在SQLServer中做很多事情--例如,可以将XML列绑定到xsd,或者可以将XML的一部分(通过UDF/XQuery)提升到持久化的索引列。但是,如果你是只是使用数据库进行存储,这是不必要的--实际上,如果你需要在以后的某个日期更改xsd,那么在数据库中使用xsd是一个主要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100000015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档