2sxc - 在自定义 api 控制器中获取新创建的 object 的 EntityId 或 EntityGuid

2sxc - Get EntityId or EntityGuid of newly created object inside custom api controller

为了在我的自定义 API 中添加新实体,我使用如下代码:

    var tagGroup = new Dictionary<string, object>();
    tagGroup.Add("Title", "Some new tagGroup name");
    App.Data.Create("TagGroup", tagGroup, "WebApiUser");

如果我只需要添加新实体,这个工作很好,但是如果我需要做更多的操作并且在这个 opetarions 中我需要使用这个新创建的实体的 Id 或 Guid 我不知道如何得到它.

一种方法是通过标题取回这个新实体,但如果这个标题不是唯一的,我不知道该怎么做?

我尝试使用此代码:

    dynamic obj1 = App.Data.Create("TagGroup", tagGroup, "Web Api User");
    // or
    var obj2 = App.Data.Create("TagGroup", tagGroup, "Web Api User");

但是出现错误,因为函数没有 return 任何值。有没有其他方法可以使它工作?

是否可以像 IsPublished 那样预先定义新实体的 guid?

====================

解决方案 1:

var tGuid = System.Guid.NewGuid().ToString();
tagGroup.Add("EntityGuid", tGuid);

工作正常

我同意在自定义 api 控制器中设置 EntityGuid 以获取新的 EntityId

var tGuid = System.Guid.NewGuid();
var tagGroup = new Dictionary<string, object>();
tagGroup.Add("Title", "Some new tagGroup name");
tagGroup.Add("EntityGuid", tGuid);
App.Data.Create("TagGroup", tagGroup, "WebApiUser");

var tNewObj =AsDynamic(App.Data["TagGroup"]).Where(x=>x.EntityGuid==tGuid).First();
var tNewEntityId = tNewObj.EntityId;
// do whatewer you want with this entity..

这是我的最终代码...

更新:2sxc 现在有这个功能。 .Create() 现在 returns 新创建的实体...