Design Ich muss Entitäten, z. B. Produkte Daten, von unserem lokalen System zu einem externen Client über Web-API verfügbar machen. Die Feldnamen der Entitäten & sind in beiden Systemen unterschiedlich, z.B. Kategoriedaten müssen ProductCategroy zugeordnet werden, ähnliche Datumsformate können ebenfalls variieren. Es können auch zusätzliche Geschäftsregeln für die Feldformate vorhanden sein.Wie Mapping-Entities zwischen zwei verschiedenen System in Web-API
Anstatt dann die Felder im Code mit einem Mapping-Tools wie Automapper oder entwickeln benutzerdefinierte Mapper zuordnen Ich möchte Config-Dateien verwenden, so dass wir nach dem Hinzufügen/Aktualisieren von Feldern nicht neu kompilieren müssen.
z.B. wir eine Person Einheit aussetzen müssen, sind die Feldnamen anders als unter
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
Diese sehr leicht in AutoMapper gehandhabt werden kann. Das Problem, das wir haben, ist, dass, wenn ein neues Feld extern hinzugefügt/entfernt/exponiert werden muss, ich den Code neu kompilieren muss, nachdem ich diese Eigenschaft hinzugefügt habe. Ich möchte, dass diese Eigenschaften konfigurierbar sind, um eine Neukompilierung zu vermeiden.
Kann jemand ein Tool/Beispiele oder einen Ansatz vorschlagen, die helfen könnten, dies zu entwickeln? danke
Es ist nicht klar, wie Ihre Entitäten in Ihrem lokalen System repersentiert werden, so dass Sie die Neukompilierung des Web-Service theoretisch vermeiden können, wenn Sie einer Entität ein Feld hinzufügen. Ohne das "Quellformat" des Mappings zu kennen, ist es schwierig, Vorschläge zu machen. – SergGr
Clientanforderungen an unsere API für Daten, diese Daten werden auf dem SQL Server gespeichert und über Serviceendpunkte verfügbar gemacht. Unsere Middleware-API empfängt diese Anfrage vom Client und ruft die internen Endpunkte auf. Nachdem Daten empfangen wurden, speichern Geschäftsmodellobjekte wie 'Produkt' vorübergehend diese Daten. Anschließend transformiert die Serviceebene diese Daten basierend auf den Geschäftsregeln um verschiedene Felder im Modell. Nach der Transformation werden die Daten zurückgegeben. Ich habe oben eine Entität "Person" mit verschiedenen Feldnamen beschrieben – rumi
Schauen Sie sich [diesen Beitrag] an (https://losetechies.com/jimmybogard/2011/02/09/autoprojecting-linq-queries/). Sie projizieren Abfragen an andere Klassen, die Eigenschaftsnamen prüfen, indem sie Ausdrucksbäume verwenden. Verwenden spezifischer: MemberInit. Sie können das bearbeiten, um die Konfiguration der Quell- und Zieleigenschaften von Ihrem XML zu laden. Ich kann ein vollständiges Beispiel für deine Wünsche veröffentlichen. –