我的项目遇到了一个奇怪的问题。我有一个自动更新表格的上传 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");
}
}
更新:
值得一提的是,我从我的代码中取出创建日期,然后在 SQL 中为我放置 GetDATE()
的列。问题仍然存在,因此它不会在 CreatedDate
发生。如果碰巧 UpdatedDate
是问题,我不知道为什么会这样。调试时我确实看到 UpdatedDate
确实返回零但是我的代码不要求插入 UpdatedDate
那么为什么它会尝试插入它呢?或者它只是一个代码,它看到它并标记它不正确。如果是这种情况,那么为什么我的另一个 Controller 中的代码完全相同,却没有做同样的事情?
最佳答案
您没有为 UpdatedDate
存储一个值,它可以为 null,是真的,但是这个错误主要发生在年、月、日等的 DateTime 因任何原因具有 0 值时试图作为值插入/更新。
关于c# - DateTime.Now C# 向数据库添加记录时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66620815/