【问题标题】:Silverlight 4 Entity framework issueSilverlight 4 实体框架问题
【发布时间】:2011-10-18 12:53:59
【问题描述】:

我在 Silverlight 中使用 RIA 服务创建了一个示例应用程序。我正在使用实体框架进行 CRUD 操作,但它不适用于带有以下异常的 INSERT 操作,“提交操作验证失败。请检查 EntitiesInError 中每个实体的 Entity.ValidationErrors 以获取更多信息。” 我有不应用任何验证,但不知道错误是如何发生的。 我已经测试过,当我创建一个 DB 实体对象并为其分配值然后通过调用 object.SaveChages() 进行保存时,它工作正常。但它的默认方法不起作用。任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: entity-framework silverlight-4.0 wcf-ria-services


    【解决方案1】:

    SubmitOperation 回调有一个EntitiesInError 属性,您可以使用它来遍历实体。这就是获得“真正”错误的方法。

    这是我必须向用户展示问题所在的方法...

    public static bool WasSubmittedOK(SubmitOperation so, string errorMessageHeader, out string errorMessage)
    {
        errorMessage = string.Empty;
        if (!so.HasError)
            return true;
    
        so.MarkErrorAsHandled();
    
        errorMessage = "An unknown error has occurred";
        if (so.EntitiesInError.Count() > 0)
        {
            StringBuilder builder = new StringBuilder();
            builder.AppendFormat("{0}\r\n", errorMessageHeader);
            foreach (Entity item in so.EntitiesInError)
            {
    #if DEBUG
                builder.AppendFormat("\r\nFor {0}", item.GetType());
    #endif
                foreach (ValidationResult error in item.ValidationErrors)
                {
                    builder.AppendFormat("\r\n- {0}", error.ErrorMessage);
                    Debug.WriteLine(string.Format("Error in {0}:'{1}'", string.Join(",", error.MemberNames.ToArray()), error.ErrorMessage));
                }
            }
            errorMessage = builder.ToString();
        }
        else if (so.Error != null) { errorMessage = so.Error.Message; }
    
        return false;
    }
    

    【讨论】:

      【解决方案2】:

      您是否能够深入研究验证错误?实际上,我在 12 月的 MSDN 杂志数据点上有一篇关于此的文章,但我敢打赌你不想等待,对吧? :)

      即使您没有应用任何特定验证,EF 仍会检查诸如外键约束之类的东西。如果您能看到错误是什么,最终将有助于解决您的问题。调试到异常。看看是否有可用的 DbEntityValidationException ......也许它在一个 innerexceptoin 中。 DbEntityValidationException 将有一个或多个 EntityValidationErrors。 这些中的每一个都包含为一个实例找到的所有错误的列表。这意味着一次扩展一个 EntityValidationErrors 项并查看其中包含的 ValidationError 项。

      【讨论】:

        猜你喜欢
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 2011-10-04
        相关资源
        最近更新 更多