19

Tôi đang cố tạo cột 'thời gian (7)' trong bảng có Mã khung thực thể trước tiên. Đây là Entity tôi:Loại 'thời gian' của SQL trong Mã khung thực thể Đầu tiên

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

Như bạn có thể thấy tôi đang cố gắng để thiết lập các loại cơ sở dữ liệu cho các cột StartTime và EndTime đến "thời gian" nhưng tôi nhận được lỗi này:

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

tôi cũng đã thử với TypeName = "time (7)" nhưng tôi nhận được lỗi khác này:

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

Làm cách nào để tạo cột thời gian với mã trước? (tốt nhất là không có API thông thạo)

Xin cảm ơn trước.

+0

Nếu bạn sử dụng trình thiết kế EDMX, loại dữ liệu nào sẽ chọn cho cột thời gian của bạn? Có lẽ bạn không nên sử dụng 'DateTime', nhưng tôi không chắc loại đúng là gì, và đây là cách dễ dàng để tìm hiểu. – hvd

Trả lời

25

Nếu bạn muốn sử dụng Time nhập cơ sở dữ liệu, bạn sẽ phải sử dụng TimeSpan với chu kỳ 24 giờ trong đơn đăng ký của mình. DateTime không đại diện cho thời gian.

+1

Vâng thưa bạn, bạn nói đúng. Cảm ơn – Escobar5

+1

Thực ra, khi bạn muốn lưu trữ thời gian trong ngày, có hai lý do chính đáng để sử dụng DateTime trong thực thể. Định dạng TimeSpan của .NET 4 không hỗ trợ AM/PM, và các điều khiển giao diện người dùng như DevExpress không liên kết với TimeSpans vì lý do tương tự. Có nghĩa là tôi buộc phải sử dụng DateTime và bây giờ tôi đang tìm cách để hòa giải EF6 với cột 'time (0)' tôi muốn sử dụng. – jnm2

+0

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

Các vấn đề liên quan