我需要通过web api将实体(例如产品数据)从本地系统公开给外部客户端。实体字段名称&格式在两个系统中是不同的,例如类别需求映射到ProductCategroy,类似的日期格式也可能会有所不同。在字段格式周围还可能存在其他业务规则。如何设计web api中两个不同系统之间的映射实体
而不是使用像Automapper这样的映射工具映射代码中的字段,或者开发自定义映射器我想使用配置文件,以便在添加/更新字段后不必重新编译。
例如我们要暴露一个人的实体,字段名如下
Person
NationalityIsoCode <--Will need mapped to--> NATIONALITY
BirthDate <--Will need mapped to--> DATEOFBIRTH
IsPersonDisabled <--Will need mapped to--> DISABLED
StartDate <--Will need mapped to--> DATEFROM
这可以在automapper可以非常容易地处理不同。我们遇到的问题是,如果需要添加/删除/外部暴露新字段,则必须在添加该属性后重新编译代码。我希望这些属性可以配置以避免重新编译。
任何人都可以建议任何工具/例子或方法,可能有助于发展呢? 谢谢
目前尚不清楚您的实体如何在本地系统内被分散,以便理论上避免在向某个实体添加字段时重新编译Web服务。在不知道映射的“源格式”的情况下,很难提出任何建议。 – SergGr
客户端向我们的API请求数据,这些数据存储在sql server中并通过服务端点公开。我们的中间件API从客户端收到此请求并调用内部端点。收到数据后,像“Product”这样的商业模型对象暂时保存这些数据。然后,服务层根据模型中各个字段的业务规则转换此数据。一旦转换,数据就会传回。我在上面描述了一个具有不同字段名称的Person实体 – rumi
看看[这篇文章](https://lostechies.com/jimmybogard/2011/02/09/autoprojecting-linq-queries/)。他们使用表达式树将查询投影到其他类,检查属性名称。使用更具体的:MemberInit。你可以编辑它,从你的xml加载源和目标属性的配置。如果你愿意,我可以发表一个你想要的完整的例子。 –