odata v4客户端代码生成器:深插入怎么办?

时间:2017-04-09 22:17:12

标签: c# .net odata

我所拥有的是像

var item1 = new Item { CODE = "ABC1", NAME = "A B C 1" };
var item2 = new Item { CODE = "ABC2", NAME = "A B C 2" };
var items = new DataServiceCollection<Item >{ item1, item2 };
var mt    = new MyType { CURRDATE = DateTime.Now.toString(), ITEMS = items };
_container.AddToMyType(mt);
var resp = _container.SaveChanges();
//...etc

是吗?它抱怨一些关于

的事情

"Unhandled Exception: System.InvalidOperationException: An item could not be added to the collection. When items in a DataServiceCollection are tracked by the DataServiceContext, new items cannot be added before items have been loaded into the collection."

1 个答案:

答案 0 :(得分:0)

据我所知,OData v4客户端不支持深度插入。

执行此操作的一种方法是创建OData Action方法并在发送到OData Action方法之前序列化实体并以字符串形式发送,然后在服务器端对其进行反序列化。

我在下面列出的另一个选项是让你做&#34; POST&#34;与父母/子女:

def conv_mytext(text, **keyword_parameters):
    if('convert_digits' in keyword_parameters):
    word_tokens = word_tokenize(text)
    for w in word_tokens:
        if int(w):
            word_tokens[w] = num2words(w)
        else:
            continue
    return text

将此方法放在一个新的类中,该类偏向您的&#34;代理&#34;生成的课 然后调用Container类并调用SaveWithChildren方法 这将调用父控制器POST方法 它只调用父控制器POST方法,你必须在服务器上迭代子节点。