2017-07-21 3 views
0

Ich habe in letzter Zeit verschiedene JavaScript-Frameworks untersucht und beschlossen, eine ASP.Net Core MVC-Frontend mit Aurelia neu zu schreiben. Ich habe die SPA template verwendet, um neu zu starten.Aurelia und Modelle in ASP.net Kern

Alles funktioniert gut, ich habe meine DAL-, BLL-Projekte geladen, meine Verbindung zu meiner Datenbank mit EF-Core eingerichtet und Daten in mein Aurelia-Frontend gezogen.

In meinen ts-Dateien verwende ich zur Zeit jedoch Schnittstellen, die fast identisch mit den Modellen sind, die ich in meinem BLL eingerichtet habe.

Mein Modell:

public class staff 
    {   
     [Key] 
     public short StaffId { get; set; } 

     [DisplayName("First name *")] 
     public string FirstName { get; set; } 

     [DisplayName("Family name *")] 
     public string FamilyName { get; set; } 

     [DisplayName("Phone")] 
     public string PhoneNumber { get; set; } 

     [DisplayName("Birth Date"), DisplayFormat(DataFormatString = "{0:dd MMM yyyy}", ApplyFormatInEditMode = true)] 
     public DateTime? BirthDate { get; set; } 
    } 

Aurelia Schnittstelle in meinem ts

interface staff{ 
    firstname: string; 
    familyname: string; 
    phone: string; 
    date: date; 
} 

Datei würde ich Redundanz vermeiden möchten und würden die Modelle gerne stattdessen direkt verwenden. Gibt es eine Möglichkeit, dies zu tun, indem ich die Modelle in meine ts-Dateien importiere/einfüge? Noch besser kann ich die Anmerkungen verwenden, um die Titel meiner Tabellen im HTML zu setzen oder um etwas zu formatieren/zu validieren?

Danke

Sylvain

Antwort

0

Obwohl zunächst es wie eine gute Idee erscheinen mag Ihre aurelia Modelle von Back-End-Modelle erzeugt haben, entfernt es einen großen Vorteil ein SPA verwenden.

Sie sollten sowohl Ihr Backend als auch das Aurelia-Frontend als separate Anwendungen behandeln. Ihre Ansichtsmodelle werden niemals vollständig mit Ihrer Domäne identisch sein, und wenn sie getrennt bleiben, bedeutet dies, dass eine vollständige Neufassung von beiden die andere nicht beeinflusst.

Sie sollten einen Zuordnungsmechanismus implementieren, um Ihre Domänenmodelle den Aurelia-Modellen zuzuordnen, bevor Sie sie über die Leitung senden. (Ich schlage Autoadapter vor, wenn Sie sich nicht selbst implementieren möchten)

Aus Erfahrung werden Ihre Aurelia-Modelle langsam von Ihrer Domäne abweichen, wenn Features hinzugefügt werden. Sie erhalten Eigenschaften in Ihrer Sicht, die während des Mappings direkt generiert werden, normalerweise als Aggregation anderer Eigenschaften. Dies kann sehr schmerzhaft sein, wenn Sie versuchen, diese Eigenschaften in Ihre Domain einzupassen (wo sie nicht sein sollten!) Ich weiß, dass die Duplizierung wie ein Overhead aussieht, aber Ihr Frontend direkt von Ihrem Backend abhängig macht einen viel größeren Overhead .