我试图在移动应用程序中模仿网站上有一个umbraco表单输入过程。目前我有一个应用程序与之交谈的Web服务,Web服务托管在网站的位置,并使用Umbraco.Forms.Storage
以编程方式输入Record
。
一切正常,移动应用程序中的条目将添加到Umbraco-Contour中的Enties表格中。
但是,我想检查一个条目是否与已经输入的内容重复。所以我想抓住输入的与特定字段条目匹配的所有记录。我没有使用XSLT执行任何操作,而是使用Umbraco库在C#中执行此操作。
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;
}
当我在Web服务上运行此方法时,连接总是超时。当我尝试跟踪SQL事件探查器发生的事情时,我看到很多人在数据库上访问不同的表。我不明白这个代码运行时发生了什么,因为我希望它只是获取为指定表单输入的所有记录。在网站的/ Umbraco / Contour部分中执行类似操作会导致完全不同的SQL命令(如分析器中所示),那么为什么代码版本不执行相同类型的查询?
我所追求的是一种提取为特定表格输入的所有记录的方法。我认为GetAllRecords(Guid)
使用表格Guid会这样做。有没有人使用纯C#代码做过类似的事情?
感谢您的帮助。
答案 0 :(得分:0)
您可以尝试使用:
oField.GetRecordField["Email"].ValuesAsString()
而不是:
oField.Values[0] as string
但我不确定它会有所帮助