2012-01-27 7 views
1

へ日時:保存私は、次のモデルのエンティティを有するコード最初の生成されたデータベース例外

public class ScheduledTask 
    { 
     public virtual int ScheduledTaskId { get; set; }  
     public virtual Incident TemplateIncident { get; set; } 
     //Some props are omitted for simplicity  
     [Display(Name = "Next runtime")] 
     [Required] 
     [DataType(DataType.DateTime)] 
     public virtual DateTime NextExecuteAfterDate { get; set; } 
    } 

それのDataContextの一部であるとして:

public DbSet<ScheduledTask> ScheduledTasks { get; set; } 

A UI溶液中にありますMVC3サイト。ユーザーがレコードを保存しているときはいつでも、スケジュールタスクが一緒に保存されている

:あなたが見ることができるように

_db.Add(new ScheduledTask 
         { 
          NextExecuteAfterDate = DateTime.MinValue, 
          Schedule = scheduleTypeId, 
          TemplateIncident = incident 
         }); 
      _db.SaveChanges(); 

は、私がDateTimeプロパティの最小値を割り当て、私のエンティティクラスのインスタンスを作成していますし、これをDbContextに追加します。それから私はSaveChanges()に電話します。

SaveChages()は、データベース内の

[SqlException (0x80131904): The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value. 
The statement has been terminated.] 

NextExecuteAfterDateを生成するタイプdatetime, not nullのカラムです。

datetime2はどこから来ていますか?問題を解決して、テーブルに行を追加するにはどのようにすればよいですか?

答えて

1

SQL Serverはデータベースに1.1.0001を保存したいが、SQL Server DateTimesの範囲内には格納しません。 私はそれほどEFで作業していませんが、他のORMでは、単にDateTimeをNullableに変更し、Null値を明示的に保存することができます。このような :

public class ScheduledTask 
{ 
    public virtual int ScheduledTaskId { get; set; }  
    public virtual Incident TemplateIncident { get; set; } 
    //Some props are omitted for simplicity  
    [Display(Name = "Next runtime")] 
    [DataType(DataType.DateTime)] 
    public virtual DateTime? NextExecuteAfterDate { get; set; } 
} 

は多分これははい、私はネットのDateTime.MinValueは、SQLDATETIMEと一緒に演奏しないという事実を認識していなかったEFすぎ

+0

で動作します。 –

関連する問題