19

Entity Frameworkコードファーストでテーブルに '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; } 
} 

あなたが見ることができるように、私は「時間」にデータベース列の型のStartTimeと終了時間を設定しようとしているが、私はこのエラーを取得:

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

私は」型名でも試みまし=「時間は、(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を使用する2つの理由があります。 .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

関連する問題