38

我正在尝试使用 Entity Framework Code First 在表中创建一个“时间(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; }
}

如您所见,我正在尝试将 StartTime 和 EndTime 列的数据库类型设置为“时间”,但出现此错误:

(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:类型 time(7) 没有使用命名空间或别名进行限定。只有原始类型可以在没有限定的情况下使用。

如何首先使用代码创建时间列?(最好没有流畅的 API)

提前致谢。

4

1 回答 1

53

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

于 2012-08-29T20:42:14.037 回答