0

我在图像可排序网格中有一段代码,它根据用户对“propid”的新排序顺序发回一个结果字符串数组:

 { 'imgid': '4,2,3,5,6,7,8,9,1','propid':'391' }

上面在屏幕上显示了 9 个图像。db 图像表同时具有图像 id ( imgid) 字段和排序序列字段 ( orderseq)。我正在使用自定义命名空间数据类型:

< connection.Get< ALocal.propimage >() 

像 C1 中的所有数据类型连接一样。

在直接 SQL 中,我会这样写:

string []q = imgid.Split(',');
string qry="";
for (int i = 0; i < q.Length; i++)
{
  qry += "update ALocal_propimage set propimage_orderseq="+(i+1)+"  where prop_id="+propid+" and  propimage_id="+q[i]+"  ;";
}
sqlHelper obj = new sqlHelper();
obj.ExecuteNonQuery(qry);
return "Record Updated";

当我一直失败时,这如何转换为使用 c# 将其写入 Composite 的 C1 CMS“更新多个数据”方法?

C1 站点“更新多个数据”方法的基本示例是:

using  (DataConnection connection = new DataConnection())
{
 var myUsers = connection.Get<Demo.Users>().Where (d => d.Number < 10).ToList();
 foreach  (Demo.Users myUser in myUsers)
{
  myUser.Number += 10;
}   
connection.Update<Demo.Users>(myUsers);
} 

任何帮助将非常感激。

4

1 回答 1

1

您需要将更新代码拆分为获取和更新,以让 C1 确切知道您要更新哪个实体。所以像这样

for (int i = 0; i < q.Length; i++)
{
  var propimages = connection.Get<ALocal.propimage>().Where(o => o.PropId = propid && p.PropImageId = q[i]);
  foreach (var o in propimages) 
  {
     o.OrderSeq = i + 1;
  }

  connection.Update(propimages);
}
于 2013-06-19T14:52:12.357 回答