【问题标题】:Getting all records in code获取代码中的所有记录
【发布时间】:2013-09-11 08:54:14
【问题描述】:

我试图在移动应用程序中模仿的网站上有一个 umbraco 表单输入过程。就目前而言,我有一个与应用程序对话的网络服务,该网络服务托管在网站的位置,并使用Umbraco.Forms.Storage 以编程方式输入Record

这一切正常,来自移动应用程序的条目被添加到 Umbraco-Contour 中的表单条目表中。

但是,我想检查正在输入的条目是否与已输入的内容重复。所以我想获取与特定字段条目匹配的所有记录。我没有使用 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 Profiler 发生的事情时,我看到很多数据库都被访问到不同的表。我不明白这段代码运行时会发生什么,因为我希望它只是抓取为指定表单输入的所有记录。在网站的 /Umbraco/Contour 部分执行类似的操作会导致完全不同的 SQL 命令(如分析器中所示),那么为什么代码版本不执行相同类型的查询?

我所追求的只是一种提取为特定表单输入的所有记录的方法。我认为GetAllRecords(Guid) 使用 Guid 表格会做到这一点。有没有人用纯 C# 代码做过类似的事情?

感谢您的帮助。

【问题讨论】:

    标签: umbraco umbraco-contour


    【解决方案1】:

    你可以尝试使用:

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

    代替:

    oField.Values[0] as string
    

    但我不确定它是否会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      相关资源
      最近更新 更多