簡體   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