插入null datetime值的EntityValidationErrors

时间:2015-06-08 08:21:37

标签: c# .net entity

我试图将空值保存到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();

1 个答案:

答案 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);
        }

检查即将发生的错误类型......