Как сгенерировать структуру браузера модели, используя базу данных sdb - PullRequest
0 голосов
/ 28 октября 2019

Мне нужно заново создать структуру браузера модели, но пока я не добился успеха, я пытаюсь присоединиться к родителям и детям, чтобы заново создать структуру в средстве просмотра.

Oneиз моих требований - использовать базу данных model.sdb, поэтому я не могу использовать древовидную структуру в средстве просмотра. (Viewer API) ИЛИ производное от API API

Так что что-нибудь между запросом SQL и выражением linq решит мою проблему.

Спасибо!

        var queryBranches = universe.Where(o => o.ObjectsEav.Any(eav => eav.Attribute.Name == "child" && eav.Attribute.Category == "__child__"));
        var queryLeafs = universe.Where(o => o.ObjectsEav.Any(eav => eav.Attribute.Name == "parent" && eav.Attribute.Category == "__parent__")).Except(queryBranches);

//Get Structure
foreach (var leaf in leafs)
{
    var leafAttr = leaf.ObjectsEav.FirstOrDefault(eav => eav.Attribute.Name == "parent");
    if (leafAttr == null)
        leafAttr = leaf.ObjectsEav.FirstOrDefault(eav => eav.Attribute.Name == "parent");

    ...

}

Одним из моих требований является использование базы данных model.sdb, поэтому я не могу использовать древовидную структуру внутри средства просмотра. (Viewer API) ИЛИ производное от API API .

1 Ответ

1 голос
/ 29 октября 2019

Вы можете запросить свойство db в клиентском браузере или в бэкэнде .

В качестве альтернативы попробуйте model.getPropertyDb().executeUserFunction():Promise, чтобы выполнить функцию в рабочем потоке в PropertyDatabaseэкземпляр:

 executeUserFunction(function(pdb) {
         var dbId = 1;
         pdb.enumObjectProperties(dbId, function(propId, valueId) {
               // do stuff
         });
    })
...