[英]how to insert null Datetime in database with entity framework codefirst
我的模型包含一個可以為空的datetime屬性。 我正在使用CodeFirst
public DateTime? GoDate { get; set; }
我想在該字段中插入一個nullvalue但是EF插入通常的00/00/0001日期而不是null,這也給了我一個錯誤。
即時通訊使用microsoft sql server 2012。
DateTime? date = null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();
給我錯誤。
將datetime2數據類型轉換為日期時間數據類型會導致超出范圍的值。\\ r \\ n語句已終止。
這是因為sql server datetime不能有00/00/0001,一旦它將null日期時間插入數據庫,EF就會自動生成。
我想在db中插入null。
EF插入通常的00/00/0001日期而不是null
它沒什么常見的 。 保留給自己的設備,EF 6.1插入NULL
。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var DataContext = new StackOverflowContext();
DateTime? date = null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();
}
}
class Model
{
public int ModelId { get; set; }
public DateTime? GoDate { get; set; }
}
class StackOverflowContext : DbContext
{
public DbSet<Model> Models { get; set; }
}
}
您的映射或數據庫架構很可能是錯誤的。
或者你可以像這樣設置:
var entity= new Model
{
GoDate = (DateTime?) null
}
DataContext.Models.Add(entity);
DataContext.SaveChanges();
我認為它有點清潔。
你可以用這個:
Nullable<DateTime> date=null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();
你可以在你的模型中使用這樣的東西。 然后從您的控制器發送null將正常工作。
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Date")]
public DateTime? Date { get; set; }
注意“?” 在DateTime日期之前
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.