我在Odata v4客户端中使用Odata WebApi.2.1服务。
当我尝试更新实体时,我收到了以下错误:
" UpdateRelatedObject方法仅在sourceProperty不是集合时才有效"
我的应用程序中有以下代码。
public class Customer
{
int CustomerId;
string CustomerName;
ICollection<Order> Orders;
}
public void Save()
{
foreach (var item in Customer.Orders)
{
Context.UpdateRelatedObject(Customer, "Orders", item);
}
Context.UpdateObject(Customer);
Context.SaveChanges();
}
在这里,&#34;订单&#34;是Customer类的导航属性。我该如何解决这个问题?
答案 0 :(得分:1)
的Rahul
基本上,有两条规则:
OData客户端中的公共API UpdateRelatedObject
旨在更新非集合属性。在其开源中,代码如下:
public void UpdateRelatedObject(object source, string sourceProperty, object target)
{
...
ClientPropertyAnnotation property = parentType.GetProperty(sourceProperty, false);
if (property.IsKnownType || property.IsEntityCollection)
{
throw Error.InvalidOperation(Strings.Context_UpdateRelatedObjectNonCollectionOnly);
}
...
}
因此,您的错误消息将在上面的throw
语句中抛出。
通常情况下,您可以按照以下步骤操作:
希望它可以帮到你。感谢。