我试图构建一个WCF服务,通过XML从另一个服务获取信息。 XML通常有4个元素,从int,string到DateTime。我想动态地构建服务,以便在获取XML时将其存储在数据库中。我不想在代码中对类型和元素名称进行硬编码。如果有变化,我希望它动态地将它添加到数据库这样做的最好方法是什么?这是一个很好的做法吗?或者我应该坚持使用实体框架并为数据库设置一个模型,并硬编码元素名称和类型?WCF服务将数据动态地从XML存储到数据库
感谢
:)
我试图构建一个WCF服务,通过XML从另一个服务获取信息。 XML通常有4个元素,从int,string到DateTime。我想动态地构建服务,以便在获取XML时将其存储在数据库中。我不想在代码中对类型和元素名称进行硬编码。如果有变化,我希望它动态地将它添加到数据库这样做的最好方法是什么?这是一个很好的做法吗?或者我应该坚持使用实体框架并为数据库设置一个模型,并硬编码元素名称和类型?WCF服务将数据动态地从XML存储到数据库
感谢
:)
像往常一样, “这取决于......”。
如果您收到的数据的性质是没有固定模式,或者作为其业务逻辑/域逻辑的一部分经常更改的模式,最好设计一个解决方案来管理。在设计阶段存储您不知道的模式的数据是StackOverflow的长期争论 - 查找“属性包”,“实体属性值”或EAV以查看各种问题和答案。
你放弃这种方法的东西是 - 在Web服务层 - 检查你收到的数据是否符合约定的接口契约的能力;这反过来有助于避免各种令人兴奋的错误 - 如果您的系统收到无效的XML,应该怎么做?没有商定的schema/dtd,你必须在代码中建立各种其他检查。
在数据库级别,通常最终会放弃关系模型的各个方面(因此也就是SQL的强大功能)来存储数据,而不需要“传统”的行列关系。这通常会使查询更加困难,并且可能会牺牲标准遵从性(例如,通过使用供应商特定的扩展)。
如果数据因为技术原因而改变 - 也就是说数据的性质不是要改变的,那只是技术链让你担心 - 我建议你改为使用版本控制的概念,具有不同版本的“强类型”服务/数据。虽然这似乎更多的工作,依靠模式验证,关系数据库模型和简单的好处通常使它成为一个很好的折衷...
这正是我所期待的!谢谢!我将看看这些辩论 – Mage 2012-04-27 19:20:28