如何使用实体框架codefirst在数据库中插入null Datetime

Afl*_*red 19 c# asp.net entity-framework

我的模型包含一个可以为空的datetime属性.我正在使用CodeFirst

 public DateTime? GoDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想在该字段中插入一个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();
Run Code Online (Sandbox Code Playgroud)

给我错误.

将datetime2数据类型转换为日期时间数据类型会导致超出范围的值.\ r \n语句已终止.

这是因为sql server datetime不能有00/00/0001,一旦它将null日期时间插入数据库,EF就会自动生成.

我想在db中插入null.

ta.*_*.is 15

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; }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您的映射或数据库架构很可能是错误的.