Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql WCF服务将数据从XML动态存储到数据库_Sql_Xml_Wcf - Fatal编程技术网

Sql WCF服务将数据从XML动态存储到数据库

Sql WCF服务将数据从XML动态存储到数据库,sql,xml,wcf,Sql,Xml,Wcf,我正在尝试构建一个WCF服务,该服务通过XML从另一个服务获取信息。XML通常有4个元素,从int、string到DateTime。我希望动态地构建服务,以便在获取XML时将其存储在数据库中。我不想在代码中硬编码类型和元素名称。如果有更改,我希望它能够动态地将其添加到数据库中,这样做的最佳方式是什么?这是一种好的做法吗?或者我应该坚持只使用实体框架,为数据库设置一个模型,并对元素名称和类型进行硬编码吗 谢谢 :)像往常一样,“这取决于……” 如果您接收的数据的性质是没有固定的模式,或者模式作为其

我正在尝试构建一个WCF服务,该服务通过XML从另一个服务获取信息。XML通常有4个元素,从int、string到DateTime。我希望动态地构建服务,以便在获取XML时将其存储在数据库中。我不想在代码中硬编码类型和元素名称。如果有更改,我希望它能够动态地将其添加到数据库中,这样做的最佳方式是什么?这是一种好的做法吗?或者我应该坚持只使用实体框架,为数据库设置一个模型,并对元素名称和类型进行硬编码吗

谢谢

:)

像往常一样,“这取决于……”

如果您接收的数据的性质是没有固定的模式,或者模式作为其业务逻辑/域逻辑的一部分经常更改,那么设计一个解决方案来管理它是一个好主意。存储您在设计时不知道其模式的数据是有关StackOverflow的长期争论-查找“属性包”、“实体属性值”或EAV以查看各种问题和答案

在web服务层,您放弃使用这种方法的地方是检查您接收的数据是否符合约定的接口契约的能力;这反过来又有助于避免各种令人兴奋的错误——如果您的系统接收到无效的XML,该怎么办?如果没有约定的模式/dtd,您必须在代码中构建各种其他检查

在数据库级别,您通常会放弃关系模型的某些方面(因此也放弃了SQL的功能),而不使用“传统”的行和列关系来存储数据。这通常会使查询更加困难,并且可能会牺牲标准遵从性(例如,通过使用特定于供应商的扩展)


如果数据因技术原因而发生变化——即,变化不是数据的性质,而是技术链让您担心——我建议您改为构建版本控制的概念,并使用不同版本的“强类型”服务/数据。虽然这似乎需要更多的工作,但依赖于模式验证、关系数据库模型和简单性的好处通常使其成为一个很好的折衷方案…

将xml作为xml放入数据库。许多现代数据库直接支持XML。如果没有,只需将其存储为文本。

我需要表结构中的数据,以便查询如果您使用的是支持xml的现代RDMS,您可以查询它!这正是我要找的!谢谢我将看看这些辩论