Получение всех записей в коде

На веб-сайте есть процесс ввода формы umbraco, который я пытаюсь имитировать в мобильном приложении. В моем нынешнем виде у меня есть веб-служба, с которой приложение общается, веб-служба размещается в местоположении веб-сайта и использует Umbraco.Forms.Storage программно ввести Record,

Все это прекрасно работает, и записи из мобильного приложения добавляются в таблицу форм Enties в Umbraco-Contour.

Тем не менее, я хотел бы проверить, что сделанная запись не будет дубликатом чего-то уже введенного. Поэтому я хотел получить все записи, которые соответствуют определенной записи поля. Я не делаю ничего из этого с помощью XSLT, но вместо этого делаю это в C# с использованием библиотек Umbraco.

private List<Record> GetRecordsMatchingEmail(string sEmail)
{
    RecordStorage oRStorage;
    List<Record> oMatchedRecords;
    RecordField oField;
    //
    oRStorage = new RecordStorage();
    oMatchedRecords = new List<Record>();
    foreach (var oRec in oRStorage.GetAllRecords(new Guid(FORM_GUID)))
    {
        oField = oRec.RecordFields[new Guid(EMAIL_FIELD_GUID)];
        //
        if (oField.Values.Count < 1 || !sEmail.Equals(oField.Values[0] as string))
            continue;
        //
        oMatchedRecords.Add(oRec);
    }
    //
    return oMatchedRecords;
}

Когда я запускаю этот метод в веб-сервисе, соединение всегда прерывается. Когда я пытаюсь проследить, что происходит с SQL Profiler, я вижу, как много посещений БД попадают в разные таблицы. Я не понимаю, что происходит, когда этот код выполняется, так как я ожидаю, что он просто захватит все записи, введенные для указанной формы. Выполнение чего-то похожего из раздела /Umbraco/Contour веб-сайта вызывает совершенно другую команду SQL (как видно в профилировщике), так почему же версия кода не выполняет такой же запрос?

Все, что мне нужно, это способ извлечь все записи, введенные для конкретной формы. я думал GetAllRecords(Guid) используя формы, Guid сделает это. Кто-нибудь сделал что-то подобное, используя чистый код C#?

Спасибо за помощь.

1 ответ

Вы можете попробовать использовать:

oField.GetRecordField["Email"].ValuesAsString()

вместо:

oField.Values[0] as string

Но я не уверен, что это поможет

Другие вопросы по тегам