19

Entity Framework Code First를 사용하여 테이블에 'time (7)'열을 만들려고합니다. 이건 내 법인입니다 :Entity Framework 코드에서 SQL 'time'형식 코드 우선

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; } 
} 

당신은 내가 열 상영 및 종료 시각을 "시간"에 대한 데이터베이스 유형을 설정하기 위해 노력하고있어 볼 수 있지만이 오류가되는 때 : 나는 '

(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'.

을 나는 TypeName = "time (7)"을 시도했지만 다른 오류가 발생합니다 :

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

어떻게 코드를 먼저 사용하여 시간 열을 만들 수 있습니까? (바람직하게 유창한 API없이)

미리 감사드립니다.

+0

EDMX 디자이너를 사용하는 경우 시간 열에 대해 어떤 데이터 형식을 선택합니까? 아마'DateTime'을 사용해서는 안되지만 올바른 유형이 무엇인지 잘 모르겠습니다. 그리고 이것은 쉽게 찾을 수있는 방법입니다. – hvd

답변

25

데이터베이스에 Time 유형을 사용하려면 TimeSpan을 응용 프로그램에서 24 시간 주기로 사용해야합니다. DateTime은 시간을 나타내지 않습니다.

+1

네, 네 말이 맞아. 감사합니다. – Escobar5

+1

사실, 시간을 저장할 때 엔티티에서 DateTime을 사용하는 두 가지 좋은 이유가 있습니다. .NET 4의 TimeSpan 포맷터는 AM/PM을 전혀 지원하지 않으며 DevExpress와 같은 UI 컨트롤은 동일한 이유로 TimeSpans에 바인딩하지 않습니다. 의미 나는 지금 DateTime을 사용하도록 강요 당하고 EF6를'time (0)'컬럼과 조정할 방법을 찾고있다. – jnm2

+0

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

관련 문제