2017-05-23 11 views
0

dapperを使用したすべての検索で、このworkoutdateフィールドに空の(デフォルトのDatetime値)が表示されるのはなぜですか?Dapperがdatetimeフィールドをデフォルト値に設定します

StringBuilder query = new StringBuilder(); 

query.Append("SELECT W.WorkoutId, W.Active, W.GymId, W.Spots, W.UserId, W.WorkoutDate, W.WorkoutStatusId FROM [Workout] W"); 

    public class Workout 
    { 
     public Guid WorkoutId { get; private set; } 
     public Guid UserId { get; set; } 
     public Guid? GymId { get; set; } 
     public int WorkoutStatusId { get; set; } 
     public int Spots { get; set; } 
     public bool Active { get; set; } 
     public DateTime WorkoutDate { get; set; } 
    } 
+2

実際に 'WorkoutDate'は' datetime'型の列ですか?たとえば、それが 'nvarchar'の場合、datetimeへのキャストは成功しないかもしれません。テーブル定義と実際に役立つDapperクエリを私たちに提供できるかどうか。テーブル定義@pcdev – pcdev

+0

: は、TABLE [DBO] [トレーニング]( \t [WorkoutId] [UNIQUEIDENTIFIER] NULL NOT、 \t [アクティブ] [ビット] NULL NOT、 \t [GymId] [UNIQUEIDENTIFIER] NULLをCREATE \t [スポット] [INT] NULL NOT、 \t [ユーザーID] [UNIQUEIDENTIFIER] NULL NOT、 \t [WorkoutDate] [DATETIME2](7)NOT NULL、 \t [WorkoutStatusId] [INT] –

+0

、NULLとNOTクラス内フィールド: 公開DateTime WorkoutDate {get; set;} –

答えて

1

あなたの列はdatetime2です。

SqlMapper.AddTypeMap(typeof(DateTime), System.Data.DbType.DateTime2); 

代替は次のように選択して、それをキャストすることです:あなたは、このような方法Dapperのマップの列を変更することができます

SELECT CAST(W.WorkoutDate AS datetime) ... 

をそれとも、「ドン場合は、日時にあなたのコラムを変更することができますdatetime2の精度を追加する必要があります。

+0

両方の戦略を試してみて、どちらもうまくいかなかった=( –

関連する問題