获取代码中的所有记录

时间:2013-09-11 08:54:15

标签: umbraco umbraco-contour

我试图在移动应用程序中模仿网站上有一个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#代码做过类似的事情?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用:

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

而不是:

oField.Values[0] as string

但我不确定它会有所帮助

相关问题