我正在尝试运行附加的代码来更新特定文档类型的某些数据,但它实际上并没有更新任何内容。
我的currentDocumentNodeId()方法基于一些其他标准撤回NodeId,然后它获得的每个节点都是HG.DocumentLibraryItem类型,其中包含列IsPublic,IsRepMining,IsRepPower,IsRepProcess和IsRepFlexStream。但是当我调用update方法然后在SQL表中为这个自定义文档类型拉回那些列时,值都是Null。 HG.DocumentLibraryItem文档类型中的每个列都设置为boolean我尝试使用Node.SetValue()方法并将其设置为true和1;这两种方法都无法更新。
任何想法我做错了什么?我正确地打电话了吗?
请参阅下面的代码:
public static void GetDocumentAreaAssignments()
{
var cmd = new SqlCommand
{
CommandText ="This is pulling back 2 rows, one with Id and one with Text",
CommandType = CommandType.Text,
Connection = OldDbConnection
};
OldDbConnection.Open();
try
{
using (SqlDataReader rdr = cmd.ExecuteReader())
{
var count = 0;
while (rdr.Read())
{
try
{
var documentId = TryGetValue(rdr, 0, 0);
var areaAssignment = TryGetValue(rdr, 1, "");
var currentDocumentNodeId = GetNodeIdForOldDocumentId(documentId);
var node = currentDocumentNodeId == 0
? null
: Provider.SelectSingleNode(currentDocumentNodeId);
if (node != null)
{
switch (areaAssignment.ToLower())
{
case "rep mining":
node.SetValue("IsRepMining", 1);
break;
case "rep power":
node.SetValue("IsRepPower", 1);
break;
case "rep process":
node.SetValue("IsRepProcess", 1);
break;
case "rep flexStream":
node.SetValue("IsFlexStream", 1);
break;
case "public":
node.SetValue("IsPublic", 1);
break;
}
node.Update();
Console.WriteLine("Changed Areas for Node {0}; item {1} complete", node.NodeID,
count + 1);
}
}
catch (Exception ex)
{
}
count++;
}
}
}
catch (Exception)
{
}
OldDbConnection.Close();
}
答案 0 :(得分:0)
coupled data(作为IsRepMining字段)仅在检索包含它们的节点时更新。为此,您必须使用带有className
参数的SelectSingleNode()方法的重载。但是,我建议您始终使用DocumentHelper
来检索文档。 (它将确保您使用最新版本的文档......如果是工作流程等。)
TreeProviderInstance.SelectSingleNode(1, "en-US", "HG.DocumentLibraryItem")
DocumentHelper.GetDocument(...)
DocumentHelper.GetDocuments(...)