2012-03-28 2 views
1

ich mit Migrationen EF-Code Zuerst verwenden für ein Projekt und ich habe auf ein seltsames Verhalten gestolpert:Der Entity Framework-Befehl "Enable-Migrations" generiert die in ANSI codierte Datei "Configurations.cs". Warum?

Ausführen die „Enable-Migrationen“ -Kommando im Paket-Manager-Konsole erzeugt eine „Migrations“ -Ordner und „Konfigurationen. cs "Datei. Wenn ich die Kodierung der "Configurations.cs" in Notepad ++ überprüfe, zeigt es an, dass es ANSI kodiert ist.

Wenn ich eine beliebige Datei in Visual Studio 2010 erstellen, ist es immer in UTF-8 codiert. Warum generiert NuGet die Datei in einer anderen Kodierung?

Vielen Dank im Voraus, Chris

+0

Wahrscheinlich, weil Powershell Dinge in ANSI erstellt, und VS erstellt Dinge in UTF-8, aber zitieren Sie mich nicht auf diesem – jcolebrand

Antwort

2

Ich habe endlich um diese richtig untersuchen zu ...

Die Dateien (Configuration.cs und die einzelnen Migrationsdateien) tatsächlich als UTF-8 ohne Datei signiture gespeichert werden. Dieses Format unterscheidet sich nicht von ANSI, wenn nicht ANSI-Zeichen irgendwo in der Datei angezeigt werden. Tools wie Notepad ++ werden nur als UTF-8 angezeigt, wenn in der Datei Nicht-ANSI-Zeichen enthalten sind. Dies liegt daran, dass eine UTF-8-Datei mit nur ANSI-Zeichen zu 100% mit dem ANSI-Format kompatibel ist.

Wenn Sie nicht-ANSI-Zeichen in Ihrem Kontexttyp-Namen, Tabellennamen usw. haben, werden die Dinge wie erwartet funktionieren, und Notepad ++ wird das Dateiformat als UTF-8 melden.

+0

Danke für die Claryfying! Ich dachte nicht, dass ANSI eine Untermenge von UTF-8 ist und blindlings auf Notepad ++ vertraut :-) – Christopher

1

Die Konfigurationsdatei wird tatsächlich als Vorlage gespeichert in einer Baugruppe in dem Paket NuGet eingebettet und wird dann in einem Projekt verarbeitet und kopiert, wenn Enable-Migrationen verwendet wird. Die gespeicherte Vorlage ist eine ANSI-Datei und daher ist die Datei, die Sie erhalten, eine ANSI-Datei. Sie sollten es in der Lage sein, es als UTF-8 zu speichern - die Laufzeit ist egal.

+0

Danke für die Antwort! Gibt es einen bestimmten Grund, warum die Vorlage ANSI-codiert ist? Und würde das nicht bedeuten, dass standardmäßig alle Seeds mit verrückten Zeichen nicht korrekt in der db gespeichert werden? – Christopher

+0

Ich glaube nicht, dass es einen besonderen Grund gibt, außer dass alle unsere Quelldateien ANSI sind und so wurde das auch so gelandet. Ich werde mit anderen nachgehen und sehen, ob es Sinn macht, UTF-8 standardmäßig zu machen. –

+0

"Standardmäßig werden alle Seeds mit verrückten Zeichen nicht korrekt in der db gespeichert", genau das passierte in unserem Projekt und wir haben einige Zeit gebraucht, um herauszufinden, warum unsere DB-Werte trotz korrekter Nvarchar- und Sortierungseinstellungen falsch sind. Das lag an den ANSI-codierten Migrationsdateien, die auf einem Server mit anderer Standard-ANSI-Codepage für Nicht-Unicode-Programme ausgeführt wurden. – JustAMartin

Verwandte Themen