Ich bin gerade dabei, von v1-3 auf v4 zu aktualisieren, aber ich habe ein paar Probleme bekommen.Datenverarbeitung mit OData v4, EF6 und Web API v2.2
Mein Verständnis ist, dass DateTime nicht unterstützt wird, und ich muss immer DateTimeOffset verwenden. Fein.
Aber bevor ich Sql date
Datentyp in der Datetime-Speicherung, jetzt scheint es, ich diesen Fehler:
Member Mapping specified is not valid. The type 'Edm.DateTimeOffset[Nullable=False,DefaultValue=,Precision=]' of member 'CreatedDate' in type 'MyEntity' is not compatible with 'SqlServer.date[Nullable=False,DefaultValue=,Precision=0]'
Was ist die Arbeit um für das? Ich muss nur Daten in der Datenbank speichern können (Zeit und Ort ist nicht wichtig). Wäre super, wenn ich das Edm.Date sowie einen zurückgegebenen Datentyp bekommen könnte, aber das hatte ich vorher nicht.
Danke.
Edit: Beispielklassen
Vorher:
public class Ticket
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required, MaxLength(50)]
public string Reference { get; set; }
[Column(TypeName = "date")]
public DateTime LoggedDate { get; set; }
}
Nach:
public class Ticket
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required, MaxLength(50)]
public string Reference { get; set; }
[Column(TypeName = "date")]
public DateTimeOffset LoggedDate { get; set; }
}
Dies ist in EF nicht gültig.
Es klingt wie die zweite Option kann das sein, was ich brauche, aber ich würde nicht alle $ Funktionalität erweitern verlieren, da es nicht mehr eine Datenbankeinheit war? – Tim
Auch ich habe Klassen hinzugefügt, um das Problem zu demonstrieren. – Tim
Sie können die Daten aus der Datenbank als OldTicket abrufen und die Daten dann in NewTicket übertragen. Nachdem dies erledigt ist, können Sie die $ expand und andere Abfrageoptionen anwenden. Allerdings wird dieser Teil im Speicher mit linq-to-objects statt linq-to-entities auf altem Weg gemacht. Wie auch immer, es ist eine Arbeit. –