19

Próbuję utworzyć kolumnę "time (7)" w tabeli z Entity Framework Code First. To jest mój Podmiot:Typ SQL "czas" w Entity Framework Code First

public class ShiftDetail 
{ 
    public long Id { get; set; } 

    [Required] 
    public int DayOfWeek { get; set; } 

    [Required] 
    [Column(TypeName="time")] 
    public DateTime StartTime { get; set; } 

    [Required] 
    [Column(TypeName = "time")] 
    public DateTime EndTime { get; set; } 

    public long ShiftId { get; set; } 
    public virtual Shift Shift { get; set; } 
} 

Jak widać Próbuję ustawić typ bazy danych dla kolumn startTime i EndTime do „czas”, ale pojawia się ten błąd:

(112,12) : error 2019: Member Mapping specified is not valid. The type 'Edm.DateTime[Nullable=False,DefaultValue=,Precision=]' of member 'StartTime' in type 'ShiftDetail' is not compatible with 'SqlServer.time[Nullable=False,DefaultValue=,Precision=7]' of member 'StartTime' in type 'CodeFirstDatabaseSchema.ShiftDetail'.

I Wcześniej próbowałem też z TypeName = „czasu (7)”, ale pojawia się ten drugi błąd:

(104,6) : error 0040: The Type time(7) is not qualified with a namespace or alias. Only primitive types can be used without qualification.

Jak mogę utworzyć kolumnę czasu z pierwszego kodu? (najlepiej bez płynnego API)

Z góry dziękuję.

+0

Jeśli używasz projektanta EDMX, jaki typ danych wybiera dla Twojej kolumny czasu? Prawdopodobnie nie powinieneś używać 'DateTime', ale nie jestem pewien jaki jest właściwy typ i jest to łatwy sposób, aby się tego dowiedzieć. – hvd

Odpowiedz

25

Jeśli chcesz użyć typu Time w bazie danych, będziesz musiał użyć aplikacji TimeSpan z cyklem 24-godzinnym. DateTime nie reprezentuje czasu.

+1

Tak, proszę pana, masz rację. Dzięki – Escobar5

+1

Właściwie, jeśli chcesz przechowywać porę dnia, istnieją dwa powody, dla których warto używać DateTime w encji. Formater TimeSpan .NET 4 nie obsługuje w ogóle AM ​​/ PM, a kontrolki interfejsu użytkownika, takie jak DevExpress, nie wiążą się z TimeSpan z tego samego powodu. Oznacza to, że jestem zmuszony do korzystania z DateTime i szukam teraz sposobu na pogodzenie EF6 z ​​kolumną 'time (0)', której chcę użyć. – jnm2

+0

E.g. http://stackoverflow.com/questions/12078603/need-to-format-timespan-ado-net-datacolumn-as-am-pm – jnm2

Powiązane problemy