Получение всех записей в коде
На веб-сайте есть процесс ввода формы 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
Но я не уверен, что это поможет