我是新来这个话题,我想知道你的意见,我应该做些什么或者我怎么能解决以下运行时映射:Automapper VS通过配置文件和反射
我开发一个C#Web服务客户端,从Web服务后面的数据库中检索数据。 Web服务响应将数据作为XML保存在CDATA元素中。 xsd模式可用。在XML中是代表一个数据集/行的元素。我只能使用一个数据集的几个字段。检索数据后,我必须检查一些业务规则/条件并将这些字段写入另一个系统。从另一个系统读取一些值,检查一些业务规则,并根据模式将它们发送回以适当的XML格式封装的Web服务。
我到目前为止做了什么。我使用XSD.exe根据底层架构生成c#类。我认为有以下几种选择让我的工作场景:
ORM框架: 这应该是矫枉过正我的应用程序。或者它不是一个解决方案,因为我不直接与数据库通信。
Automapper: 似乎是一个很好的解决方案。但我认为这不是像我的3.选项那样的灵活性(见以后)。如果在部署应用程序后检测到映射错误,我必须重新构建应用程序。另一个负面的问题是,如果模式发生变化,我将不得不重新构建我的应用程序。 (或者我总是根据模式来适应我的应用程序?)
通过自定义映射文件和反射: 我不确定这是否真的可以实现,但它是我认为最灵活的解决方案。解决方案将类似于此http://www.techrepublic.com/article/applied-reflection-dynamically-accessing-properties-of-a-class-at-runtime/6099345 如果我理解这篇文章是正确的,那么将会有一个配置文件,将类的类型及其属性映射到目标类型,例如: SourceClassType = ClassA,SourcePropertyName = PropA-> DestinationClassType = ClassB,DestinationPropertyName = PropX。
Linq2Xml: 使用Linq2Xml我可以从XML中提取所需的数据并将其放入我自己定义的类中。但是,如何根据Web服务所期望的模式将数据放回到XML中呢?
我的分析是否正确?我误解了一些东西吗?你会推荐什么?我有其他选择吗?