繁体   English   中英

DateTime.Now C# 向数据库添加记录时出现问题

[英]Issues with DateTime.Now C# When adding records to database

我的项目有一个奇怪的问题。 我有一个自动更新表格的上传 excel 文件。 上传部分无关紧要,只是为了清楚起见添加它。 使用它时,我将 dateTime 称为CreatedDate = System.DateTime.Now 它没有从 excel 文件中得到这个。 我收到超出范围错误 - dateTime2 到 dateTime 的转换。 该表具有该列的dateTime时间。 我在挠头,因为我在另一个 controller 的另一个表中有相同的确切代码,它工作正常。 在 SQL 中同时创建的表。 所以代码和表格是准确的。 一个给出错误,另一个没有。 日期通过断点恢复正常。 下面的代码中是否有您可以看到会导致此问题的内容?

[HttpPost]
    public ActionResult Add(HttpPostedFileBase FileUpload)
    {
        GeneralEntities objEntity = new GeneralEntities();
        string data = "";
        if (FileUpload != null)
        {
            if (FileUpload.ContentType == "application/vnd.ms-excel" || FileUpload.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            {
                string filename = FileUpload.FileName;
                if (filename.EndsWith(".xlsx"))
                {
                    string targetpath = Server.MapPath("~/Documents/DetailFormatInExcel/");
                    FileUpload.SaveAs(targetpath + filename);
                    string pathToExcelFile = targetpath + filename;
                    string sheetName = "Sheet1";
                    var excelFile = new ExcelQueryFactory(pathToExcelFile);
                    var Equipment = from a in excelFile.Worksheet<AirFloatTablesExcelModel>(sheetName) select a;

                    foreach (var a in Equipment)
                    {
                        var ishaveModel = db.EquipmentModels.Where(d => d.Title == a.EquipmentModel).FirstOrDefault();
                        
                        
                        AirFloatTables at = new AirFloatTables
                        {
                            AirFloatTableId = Guid.NewGuid(),
                            EquipmentModelId = ishaveModel.EquipmentModelId,
                            Size = a.Size,
                            Type = a.Type,
                            TiltHeight = a.TiltHeight,
                            DWGRef = a.DWGRef,
                            Price = a.Price,
                            SortOrder = a.SortOrder,
                            CreatedBy = User.Identity.Name,
                            CreatedDate = System.DateTime.Now
                        };
                        db.AirFloatTables.Add(at);
                        db.SaveChanges();

                    }
                }
                else
                {

                    data = "This file is not valid format";
                    TempData["Message"] = data;
                }

                return RedirectToAction("Index");
            }
            else
            {
                data = "Only Excel file format is allowed";
                TempData["Message"] = data;
                return RedirectToAction("Index");
            }
        }
        else
        {
            if (FileUpload == null)
            {
                data = "Please choose Excel file";
            }
            TempData["Message"] = data;
            return RedirectToAction("Index");
        }
    }

数据表

更新:值得一提的是,我从代码中取出了创建日期,然后在 SQL 中放入GetDATE()列。 问题仍然存在所以它没有发生在CreatedDate上。 如果碰巧UpdatedDate是问题,我不知道为什么会这样。 调试时,我确实看到UpdatedDate确实返回零但是我的代码不需要插入UpdatedDate那么它为什么还要尝试插入它呢? 或者它只是一个代码东西,它看到它并标记它不正确。 如果是这样的话,那为什么我的另一个controller里的代码,就是一模一样,不是做同样的事情呢?

您没有存储UpdatedDate的值,该值可以为空,为真,但此错误主要发生在出于任何原因尝试将值为 0 的年、月、日等的 DateTime 插入/更新为值时.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM