Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架保存返回日期时间错误_C#_Entity Framework_Datetime - Fatal编程技术网

C# 实体框架保存返回日期时间错误

C# 实体框架保存返回日期时间错误,c#,entity-framework,datetime,C#,Entity Framework,Datetime,当我试图保存一个属性为DateTimedatatype的实体时,EF6出现了一个奇怪的问题 我有一个表单,用户在其中向实体的属性输入所需的值,不过,由于我不需要通过前端指定所有值,因此在保存之前会设置一些项 这是我的模型: public partial class delivery_deviation { public int delivery_deviation_id { get; set; } public System.Guid customer_id { get; set

当我试图保存一个属性为
DateTime
datatype的实体时,EF6出现了一个奇怪的问题

我有一个表单,用户在其中向实体的属性输入所需的值,不过,由于我不需要通过前端指定所有值,因此在保存之前会设置一些项

这是我的模型:

public partial class delivery_deviation
{
    public int delivery_deviation_id { get; set; }
    public System.Guid customer_id { get; set; }
    public byte week_nr { get; set; }
    public short year { get; set; }
    public System.DateTime created_date { get; set; }
    public System.Guid created_user { get; set; }

    public virtual sf_ec_customer sf_ec_customer { get; set; }
}
这是我的控制器中的操作:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "delivery_deviation_id,customer_id,week_nr,year")] delivery_deviation dd)
    {
        var identity = ClaimsManager.GetCurrentIdentity();
        var userId = identity.UserId;

        dd.created_user = userId;
        dd.created_date = DateTime.Now;

        if (ModelState.IsValid)
        {
            db.delivery_deviation.Add(dd);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.customer_id = new SelectList(db.sf_ec_customer, "id", "profile_provider", dd.customer_id);
        return View(dd);
    }
我可以清楚地看到
created_date
值不是空的(请参见屏幕截图),但保存后,我总是会收到一个异常,并显示以下
InnerException
消息:

无法在“CMS_DEV.dbo.delivery_deviation”表的“created_date”列中插入空值;列不允许空值。插入失败。 声明已终止

此外,这是我的表格的屏幕截图:

那么,我的代码有什么问题?我和办公室里的任何人都不认为这个代码有什么问题

谢谢你, 致意

编辑 这是另一个截图,我注意到对象签名不同,但我认为这是正常的:


所以问题在于,由于某种原因,当代码第一次从现有数据库生成时,并不是所有的映射都正确完成

created\u date
的属性
StoreGeneratedPattern
设置为
Computed
。我所做的只是在edmx文件中将其设置为
None


Puff,问题解决。

捕获
DbUpdateException
异常,并在
Add
方法中查看实体。它可以是另一个实体,而不是
dd
。尝试添加一些代码(在调用SaveChanges之前)以使所有添加的实体查看是否为所有实体设置了创建日期。我怀疑在您发布的代码之外是否有其他
dd
存在此问题。@我检查了现有的3个对象(交货偏差对象列表),没有发现日期为空或无效的对象。是的,没有其他dd@Denis看到我的新截图。这就是您所指的作为另一个实体的内容吗?添加日志记录,例如:
DbContext.Database.Log+=s=>System.Diagnostics.Debug.WriteLine查看EF执行的sql查询