Entity Framework 4-Karten DateTimeOffset zu SQL-datetime in Visual Studio 2010
Ich bin mit Visual Studio 2010 RTM mit .NET, Entity Framework 4-RTM mit einer model driven design-Ansatz.
Wenn ich eine Entität erstellen, die mit einem DateTimeOffset Bereich der EF-Modellierer versucht, die Karte der DateTimeOffset, um ein SQL-datetime anstelle einer SQL-datetimeoffset.
Ich bin mit SQL Server 2008 Express, so der datetimeoffset unterstützt wird, in der Datenbank.
Visual Studio kommt diese Fehlermeldung:
Fehler 2019: Die angegebenen Zuordnung ist nicht gültig. Der Typ " Edm.DateTimeOffset[Nullable=False,DefaultValue=Präzision=]' Mitglied 'Erzeugt' im Typ 'Daten.SqlStorage.MyType' ist nicht kompatibel mit der 'SqlServer.datetime[Nullable=False,DefaultValue=Präzision=3]' Mitglied 'Erzeugt' im Typ 'Daten.SqlStorage.Store.MyTypes
Wenn ich Bearbeiten den Text direkt in der EDMX StorageModels xml-Abschnitt bekomme ich die folgende Fehlermeldung:
40 Fehler: Der Typ datetimeoffset ist nicht qualifiziert, mit einem namespace oder alias. Nur PrimitiveTypes verwendet werden können, ohne Qualifikation.
Warum nicht den modeler nur richtig zuzuordnen, dies zu einem SQL-datetimeoffset-Datentyp?
Dieses problem auch auftrat, wenn ich arbeitete immer noch mit den beta-Versionen von Visual Studio 2010 & .NET framework 4.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, zu gehen die andere Weise (DB->Modell). Er arbeitete für Julie Lerman. Es scheint mir, Ihre manuell bearbeiteten EDMX sollte auch funktionieren, wenn Sie qualifizieren die
DateTimeOffset
mit einem namespace.precision="7"
- Attribut der XML-behebt dieses Problem.In der RTM-Version können Sie etwas tun, wie dieses in Ihrem DbContext:
Dies ist auch nützlich für das erzählen von Entity Framework Code First verwenden statt datetime datetime2 beim generieren der Datenbank.
Die Lösung war ein update von DB einmal, NACHDEM Sie ändern Sie manuell in das sql-Skript und generiert die db. Ich Tat es und nach ich habe meine mapping-Tabelle und der Daten-Typ wurde geändert, um das DATUM anstelle von DATETIME. Ich denke, das gleiche kann angewendet werden, wenn Sie ändern möchten, zu DATETIME2.