Sono nel bel mezzo dell'aggiornamento dalla v1-3 alla v4, ma ho incontrato alcuni problemi.Gestione delle date con ODATA v4, EF6 e Web API v2.2
La mia comprensione è che DateTime non è supportato e devo sempre utilizzare DateTimeOffset. Belle.
Ma prima che io la memorizzazione di tipo di dati SQL date
nel DateTime, ora sembra ottengo questo errore:
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]'
Qual è il lavoro in giro per questo? Devo essere in grado di memorizzare in modo specifico solo le date nel database (il tempo e la località non sono importanti). Sarebbe bello se potessi ottenere l'Edm.Date come un tipo di dati restituito, ma non l'avevo prima.
Grazie.
Edit: Esempio classi
Prima:
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; }
}
Dopo:
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; }
}
Questo non è valido per EF.
suona come la seconda opzione può essere quello che mi serve, ma sarebbe non perdo tutto $ espandere le funzionalità in quanto non era più un'entità database? – Tim
Inoltre ho aggiunto le classi per dimostrare il problema. – Tim
È possibile recuperare i dati dal DB come OldTicket e quindi tradurre i dati in NewTicket. Al termine, è possibile applicare $ espandi e altre opzioni di query. Tuttavia questa parte verrà eseguita in memoria con linq-to-objects, piuttosto che con linq-to-entity nel vecchio modo. Comunque è un lavoro in giro. –