触发SaveChangesAsync()时出现EntityFramework错误

时间:2019-05-02 08:24:10

标签: c# entity-framework entity-framework-6

出现错误

  

一个或多个实体的验证失败。有关更多详细信息,请参见“ EntityValidationErrors”属性。

当我触发SaveChangesAsync()函数时。请参阅下面的代码:

using (var context = new CommonDBContext()) {
    var bbrs = await context.Table1
        .ToListAsync();

    var lastIndexToRemove = pimc.Result.IndexOf("UIX/");
    if (lastIndexToRemove > -1)
    {
        bbrPimcStr = pimc.Result.Remove(0, lastIndexToRemove);
    }

    foreach (var bbr in bbrs) {
        bbr.XBBR = xbbrStr;
        bbr.LastUpdated = DateTime.Now;
        bbr.LastUpdatedBy = userId;

        if (!pimc.HasError)
        {
            var graveDKI = context.graveDKIStore
                .Where(x => x.RefId == bbr.Id)
                .FirstOrDefault();

            if (graveDKI != null)
                graveDKI.GraveDKI = bbrPimcStr ;
            else
                context.graveDKIStore.Add(new graveDKIStore
                {
                    Id = Guid.NewGuid(),
                    GraveDKI = bbrPimcStr ,
                    RefId = bbr.Id,
                    MsgType = "PPIXFFT"
                });
        }
    }
    return await context.SaveChangesAsync(); // Got issue here

有人可以告诉我我的代码有什么问题吗?谢谢。

更新:添加了异常堆栈。 Error Stack

1 个答案:

答案 0 :(得分:0)

我通过检查字符的长度来解决此问题,这可能是不同的错误,具体取决于您在对象上放置的数据注释或验证器注释。要再次检查您的验证是否正确,您可以检查EntityValidationErrors下的异常堆栈以获取有关其的更深入的信息,请参见下图。

public class GraveDKIStore {
...
[MaxLength(5)] // The issue is here so I changed it to 10.
public string MsgType { get; set; }
...
}

enter image description here

P.S。感谢Roman Doskoch的非常有用的建议。