我试图将空值保存到MS SQL数据库上的datetime列。 每当抛出异常并将dob属性设置为null时,db.savechanges将抛出以下错误:
一个或多个实体的验证失败。看到 ' EntityValidationErrors'物业详情。
这可能看似多余,但holterContents.dob = null as DateTime?;
会有所作为吗?
try
{
holterContents.dob = new DateTime(Convert.ToInt32(infopatlines[38]), Convert.ToInt32(infopatlines[39]),
Convert.ToInt32(infopatlines[40]));
}
catch (Exception a)
{
holterContents.dob = null;
Log.Error(a.Message);
}
db.C_HOLTERCONTENTS.Add(holterContents);
db.savechanges();
答案 0 :(得分:0)
是否要进行Catch阻止?
如果它不会阻止检查我们的日期" 01/01/0001 12:00:00 AM"。如果它是这样的,那么你需要将它设置为' null'
使用
将保存块放入Try块中catch (DbEntityValidationException ex)
{
// Retrieve the error messages as a list of strings.
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
// Join the list to a single string.
var fullErrorMessage = string.Join("; ", errorMessages);
// Combine the original exception message with the new one.
var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
// Throw a new DbEntityValidationException with the improved exception message.
throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}
检查即将发生的错误类型......