Entity framework Silverlight 4实体框架问题
我已经用Silverlight和RIA服务创建了一个示例应用程序。我正在使用entity framework进行CRUD操作,但它不适用于插入操作,出现以下异常,“提交操作验证失败。有关详细信息,请检查EntityInError中每个实体的entity.ValidationErrors。”我没有应用任何验证,但不知道错误是如何发生的。 我已经测试过,当我创建DB entity的对象并为其赋值,然后通过调用object.SaveChages()进行保存时,它工作正常。但其默认方法不起作用。感谢您的帮助Entity framework Silverlight 4实体框架问题,entity-framework,silverlight-4.0,wcf-ria-services,Entity Framework,Silverlight 4.0,Wcf Ria Services,我已经用Silverlight和RIA服务创建了一个示例应用程序。我正在使用entity framework进行CRUD操作,但它不适用于插入操作,出现以下异常,“提交操作验证失败。有关详细信息,请检查EntityInError中每个实体的entity.ValidationErrors。”我没有应用任何验证,但不知道错误是如何发生的。 我已经测试过,当我创建DB entity的对象并为其赋值,然后通过调用object.SaveChages()进行保存时,它工作正常。但其默认方法不起作用。感谢您的
谢谢您能够深入了解验证错误吗?事实上,我在12月份的MSDN杂志Data Points上有一篇关于这一点的文章,但我打赌你不想等待,对吧?:)
即使您没有应用任何特定的验证,EF仍会检查外键约束之类的内容。如果你能看到错误是什么,这将最终有助于解决你的问题。调试到异常中。查看是否有DbEntityValidationException可用…可能在innerexceptoin中。DbEntityValidationException将有一个或多个EntityValidationError。每个实例都包含一个实例中发现的所有错误的列表。这意味着一次只展开一个EntityValidationErrors项,并查看其中包含的ValidationError项。您能够深入查看验证错误吗?事实上,我在12月份的MSDN杂志Data Points上有一篇关于这一点的文章,但我打赌你不想等待,对吧?:)
即使您没有应用任何特定的验证,EF仍会检查外键约束之类的内容。如果你能看到错误是什么,这将最终有助于解决你的问题。调试到异常中。查看是否有DbEntityValidationException可用…可能在innerexceptoin中。DbEntityValidationException将有一个或多个EntityValidationError。每个实例都包含一个实例中发现的所有错误的列表。这意味着一次展开一个EntityValidationErrors项,并查看其中包含的ValidationError项。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;
}
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;
}