实体框架代码中的SQL"时间"类型

Esc*_*ar5 24 .net entity-framework code-first entity-framework-4 ef-code-first

我正在尝试使用Entity Framework Code First在表中创建'time(7)'列.这是我的实体:

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; }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试将StartTime和EndTime列的数据库类型设置为"time",但是我收到此错误:

(112,12):错误2019:指定的成员映射无效.类型'ShiftDetail'中成员'StartTime'的类型'Edm.DateTime [Nullable = False,DefaultValue =,Precision =]'与'SqlServer.time [Nullable = False,DefaultValue =,Precision = 7]'不兼容'CodeFirstDatabaseSchema.ShiftDetail'类型中的成员'StartTime'.

我也试过TypeName ="time(7)"但我得到了另一个错误:

(104,6):错误0040:类型时间(7)未使用命名空间或别名限定.只有原始类型可以无限制地使用.

如何创建包含代码的时间列?(最好没有流畅的API)

提前致谢.

Lad*_*nka 37

如果要Time在数据库中使用类型,则必须TimeSpan在应用程序中使用24小时循环.DateTime不代表时间.

  • 实际上,当您要存储一天中的时间时,有两个很好的理由在实体中使用DateTime。.NET 4的TimeSpan格式化程序根本不支持AM / PM,并且出于相同的原因,DevExpress之类的UI控件也不会绑定到TimeSpans。这意味着我被迫使用DateTime,现在正在寻找一种使EF6与我要使用的time(0)列一致的方法。 (2认同)