c# - DateTime.Now C# 向数据库添加记录时的问题

标签 c# asp.net-mvc

我的项目遇到了一个奇怪的问题。我有一个自动更新表格的上传 excel 文件。上传部分无关紧要,只是为了清楚起见而添加它。使用它时,我将日期时间称为 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");
        }
    }

Data table

更新: 值得一提的是,我从我的代码中取出创建日期,然后在 SQL 中为我放置 GetDATE() 的列。问题仍然存在,因此它不会在 CreatedDate 发生。如果碰巧 UpdatedDate 是问题,我不知道为什么会这样。调试时我确实看到 UpdatedDate 确实返回零但是我的代码不要求插入 UpdatedDate 那么为什么它会尝试插入它呢?或者它只是一个代码,它看到它并标记它不正确。如果是这种情况,那么为什么我的另一个 Controller 中的代码完全相同,却没有做同样的事情?

最佳答案

您没有为 UpdatedDate 存储一个值,它可以为 null,是真的,但是这个错误主要发生在年、月、日等的 DateTime 因任何原因具有 0 值时试图作为值插入/更新。

关于c# - DateTime.Now C# 向数据库添加记录时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66620815/

相关文章:

asp.net-mvc - Entity Framework 所需的外键 = db.SaveChanges 上的验证错误

c# - 避免解析数据库中的 xml 字段

c# - 是否可以对进行 P/Invoke 调用的类进行单元测试?

c# - 为什么java中的嵌套类与C#中的嵌套类在以下方面有所不同?

c# - 将对象添加到 LINQ 中的字典值?

c# - 比较两个列表并找到这两个列表之间的增量的最有效模式/算法是什么?

c# - "params"和 "array parameter"有什么区别,应该在什么时候使用?

c# - 如何在 ASP.NET MVC 4 页面中显示 HTML 编辑器

javascript - Jscript 在开发和测试机器上返回不同的(计算的)结果 - 使用相同的代码

asp.net-mvc - 如何将Controller连接到Service层再到Repository层