Tengo un problema extraño con mi proyecto. Tengo un archivo de Excel de carga que actualiza automáticamente una tabla. La parte de carga es irrelevante, solo agréguela para mayor claridad. Cuando utilizo esto, llamo a la fecha y hora como CreatedDate = System.DateTime.Now. No obtiene esto del archivo de Excel. Recibo un error Fuera de rango: conversión de dateTime2 a dateTime. La tabla tiene un dateTime para la columna. Me estoy rascando la cabeza porque tengo exactamente el mismo código en otro controlador para otra tabla y funciona bien. Las tablas se crearon al mismo tiempo en SQL. Entonces el código y las tablas son exactos. Uno da el error y el otro no. La fecha vuelve bien con un Breakpoint. ¿Hay algo en el código siguiente que pueda ver que podría estar causando esto?

[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

ACTUALIZAR: Valdría la pena decir que saqué la fecha de creación de mi código y luego en SQL para la columna puse GetDATE(). El problema sigue ahí, por lo que no está sucediendo en CreatedDate. Si por casualidad el UpdatedDate es el problema, no sé por qué. Al depurar, veo que UpdatedDate regresa con ceros. Sin embargo, mi código no requiere una inserción de UpdatedDate Entonces, ¿por qué intentaría insertarlo de todos modos? ¿O es solo una cosa de código donde lo ve y señala que no es correcto? Si este es el caso, entonces ¿por qué el código en mi otro controlador, que es exactamente el mismo, no hace lo mismo?

3
Scott Purtan 14 mar. 2021 a las 06:28

1 respuesta

La mejor respuesta

No almacena un valor para UpdatedDate, que admite nulos, es cierto, pero este error ocurre principalmente cuando, por cualquier motivo, se intenta insertar una fecha y hora del año, mes, día, etc. con un valor de 0 / actualizado como valor.

1
Lajos Arpad 14 mar. 2021 a las 04:07