使用Simple.OData.Client在一个批处理中创建对象和与该对象的关系
本文关键字:创建对象 关系 对象 批处理 一个 Client OData Simple 使用 | 更新日期: 2023-09-27 18:19:22
我想使用Simple.OData.Client在一个批处理中创建一个对象和一个关系,但我很难看到我如何做到这一点。不使用批处理,我可以这样做:
var client = new ODataClient("https://localhost/api/");
var parent = client.FindEntriesAsync("Parents").Result.First();
var child = await client.InsertEntryAsync("Children", new Dictionary<string, object> { { "Name", "ChildName" } });
await client.LinkEntryAsync("Parents", parent, "Children", child);
但是当我尝试将其放入批处理时,我不能再使用第一个调用的返回来创建子线程,因为它还没有被创建。我已经尝试使用相同的数据,我用来创建对象,但这不起作用,它只是给了一个空键在服务器上的创建rel方法:
var client = new ODataClient("https://localhost/api/");
var batch = new ODataBatch(client);
var parent = client.FindEntriesAsync("Parents").Result.First();
batch += delegate (IODataClient c) { return c.InsertEntryAsync("Children", new Dictionary<string, object> { { "Name", "ChildName" } }); };
batch += delegate (IODataClient c) { return c.LinkEntryAsync("Parents", parent, "Children", new Dictionary<string, object> { { "Name", "ChildName" } }); };
await batch.ExecuteAsync();
我需要在批处理中执行此操作,因为我的数据库要求在插入数据时设置关系,因此需要在一个数据库事务中完成。
这在Simple.OData.Client中可能吗?如果不是,在OData一般可能吗?
不需要批处理,您可以通过像包含属性一样包含它来创建关系:
var client = new ODataClient("https://localhost/api/");
var parent = client.FindEntriesAsync("Parents").Result.First();
var child = await client.InsertEntryAsync("Children", new Dictionary<string, object> { { "Name", "ChildName" }, { "Parent", parent } });