8

Manchmal Entity Framework generiert schreckliche Navigationseigenschaftsnamen. Unter Verwendung des ersten Ansatzes der Datenbank, was ist der beste Weg, um das zu beheben?Umbenennen von Navigationseigenschaften

Ich bin in der Lage, die T4-Vorlagen nach meinem Geschmack zu bearbeiten, aber wie würde ich diese modifizierten Namen an tatsächliche Beziehungen binden? Sollte ich nur ein Skript schreiben, um die edmx-Datei zu modifizieren? Natürlich ist es kaum eine Option, es von Hand zu machen.

+0

Es gibt keine EDMX in EF5. Sprechen Sie über EF4? – zsong

+0

@sza, das ist seltsam, es behauptet, Version 5 in den Referenzeigenschaften zu sein. Was ich tat, war ein "ADO.NET Entity Data Model". –

+0

Ich denke, dieser Thread hat eine detailliertere Erklärung, was in den EF 5.x T4-Vorlagen geändert werden muss, um dies zu erreichen. http://stackoverflow.com/questions/12937193/improve-navigation-property-names-when-reverse-engineering-a-database – Bostrong

Antwort

1

Ja, du kannst. In den meisten Fällen müssen Sie das NavPr nur vom EF-Modelldesigner umbenennen und das Modell speichern. Dann benennt EF das NavPr in Ihren DbContext.tt Entitätsklassen um und es verursacht kein Problem.

Wenn Sie Probleme mit dem Namen des Namens haben, klicken Sie mit der rechten Maustaste auf den umbenannten NavPr und wählen Sie Eigenschaften. Dann ändern Sie die Association Eigenschaft davon in die tatsächliche Beziehung in Ihrer Datenbank.

Wenn der Name der relativen Relation dort nicht angezeigt wird, löschen Sie diese Entität und alle anderen Entitäten, mit denen eine Beziehung besteht, klicken Sie mit der rechten Maustaste auf Modell-Designer und wählen Sie Update model from database. Benenne dann einfach das hässliche NavPr um und speichere das Modell.

+3

Ich möchte das nicht im Modell Designer machen. Oft sind dafür zu viele Tabellen vorhanden. Sollte es jemals nötig sein, ein neues Modell zu erstellen, wären alle Änderungen verloren. Ich möchte EF mitteilen, welche Namenskonventionen verwendet werden sollen. –

+0

Sie können nur die Namenskonvention von EF entfernen, indem Sie in DbContext "OnModelCreating" außer Kraft setzen, und Sie müssen EF alle Dinge über Benennungseigenschaften, Fremdschlüssel usw. mitteilen! Welcher Weg ist einfacher ?! – AminSaghi

+2

'OnModelCreating' ist nur für Code First, oder? Ich brauche eine Lösung mit Database First. –