当前位置:Gxlcms > 数据库问题 > 将json对象数据保存到数据库对应的表中

将json对象数据保存到数据库对应的表中

时间:2021-07-01 10:21:17 帮助过:3人阅读

         如何将json对象数据保存到数据库对应的表中。   分析问题         json数据内容不固定,json数据格式是固定的(name:value),数据库表结构是固定的,在json数据格式 与 数据库表结构之间建立一套对应规则,写一套逻辑解析这套对应规则。     1、json对象对应的数据库表需要确定。     2、json对象的节点对应数据库表的列需要确定。
    3、json对象的value类型需要确定下来,才能对value值做相应的操作。     4、数据库表的主键列比较特殊,一般是自增长列,需要确定。     5、数据库记录一般是假删除,有一个删除状态列,需要确定。
    6、json对象的value的类型是json时,此列为外键,确定主表,获取主表主键。
    7、json对象的value的类型是array是,json此节点的数据为从表的数据,确定从表,对从表操作。   解决问题实例 一、自定义特性     定义了两个特性,EntityAttribute特性用于实体,PropertyAttribute特性用于属性
  1. <span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
  2. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;
  3. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;
  4. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text;
  5. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Threading.Tasks;
  6. </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Standard.Frame.BEntity
  7. {
  8. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  9. <span style="color: #808080;">///</span><span style="color: #008000;"> 实体特性
  10. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  11. [AttributeUsage(AttributeTargets.Class, AllowMultiple = <span style="color: #0000ff;">false</span>, Inherited = <span style="color: #0000ff;">false</span><span style="color: #000000;">)]
  12. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> EntityAttribute : Attribute
  13. {
  14. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> EntityAttribute(String entityName, String tableName)
  15. {
  16. EntityName </span>=<span style="color: #000000;"> entityName;
  17. TableName </span>=<span style="color: #000000;"> tableName;
  18. }
  19. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  20. <span style="color: #808080;">///</span><span style="color: #008000;"> 实体名称
  21. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  22. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> EntityName { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  23. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  24. <span style="color: #808080;">///</span><span style="color: #008000;"> 表名称
  25. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  26. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> TableName { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  27. }
  28. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  29. <span style="color: #808080;">///</span><span style="color: #008000;"> 属性特性
  30. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  31. [AttributeUsage(AttributeTargets.Property, AllowMultiple = <span style="color: #0000ff;">false</span>, Inherited = <span style="color: #0000ff;">true</span><span style="color: #000000;">)]
  32. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> PropertyAttribute : Attribute
  33. {
  34. </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> PropertyAttribute() { }
  35. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  36. <span style="color: #808080;">///</span><span style="color: #008000;"> json节点名称
  37. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  38. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> FieldName { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  39. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  40. <span style="color: #808080;">///</span><span style="color: #008000;"> 列名称
  41. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  42. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> ColumnName { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  43. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  44. <span style="color: #808080;">///</span><span style="color: #008000;"> 节点类型
  45. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  46. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> NodeType { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  47. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  48. <span style="color: #808080;">///</span><span style="color: #008000;"> 是否是主键
  49. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  50. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> IsPK { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  51. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  52. <span style="color: #808080;">///</span><span style="color: #008000;"> 是否删除
  53. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  54. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> IsDeletedFlag { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  55. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  56. <span style="color: #808080;">///</span><span style="color: #008000;"> 主实体
  57. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  58. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> MainEntity { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  59. }
  60. }</span>

  

二、在实体、属性上添加特性     这里特性的作用:  1、建立json对象与数据库表的对应关系。    2、建立json节点的name与数据库表列的对应关系。     3、指定json节点value的类型,类型主要有三类:字符串、json对象、数组。
    4、标示出主键列。
    5、标示出删除标示列。
    6、标示出主实体列,类似于关系表的外键关系。
  1. <span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
  2. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;
  3. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;
  4. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text;
  5. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Threading.Tasks;
  6. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.Config;
  7. </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Standard.Frame.BEntity
  8. {
  9. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  10. <span style="color: #808080;">///</span><span style="color: #008000;"> 项目信息
  11. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  12. [Entity(<span style="color: #800000;">"</span><span style="color: #800000;">PlanProject</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
  13. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> PlanProject:BaseBEntity
  14. {
  15. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  16. <span style="color: #808080;">///</span><span style="color: #008000;"> 项目ID
  17. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  18. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">planProjectID</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20_COL_10</span><span style="color: #800000;">"</span>, NodeType = NodeType.String, IsPK =<span style="color: #000000;"> BooleanType.True)]
  19. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> PlanProjectID { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }<br><br>   </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  20. <span style="color: #808080;">///</span><span style="color: #008000;"> 项目名称
  21. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  22. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">planProjectName</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20_COL_70</span><span style="color: #800000;">"</span>, NodeType =<span style="color: #000000;"> NodeType.String)]
  23. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> PlanProjectName { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }<br>
  24.      </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  25. <span style="color: #808080;">///</span><span style="color: #008000;"> 是否已删除
  26. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  27. [Property(FieldName = NodeOperation.Operation, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20_COL_200</span><span style="color: #800000;">"</span>, NodeType = NodeType.String, IsDeletedFlag =<span style="color: #000000;"> BooleanType.True)]
  28. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> IsDeleted { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  29. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  30. <span style="color: #808080;">///</span><span style="color: #008000;"> 创建时间
  31. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  32. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">createTime</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20_COL_210</span><span style="color: #800000;">"</span>, NodeType =<span style="color: #000000;"> NodeType.String)]
  33. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> CreateTime { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  34. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  35. <span style="color: #808080;">///</span><span style="color: #008000;"> 创建人
  36. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  37. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">creatorID</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20_COL_220</span><span style="color: #800000;">"</span>, NodeType = NodeType.Json, MainEntity = <span style="color: #800000;">"</span><span style="color: #800000;">User</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
  38. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> CreatorID { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  39. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  40. <span style="color: #808080;">///</span><span style="color: #008000;"> 项目组成员
  41. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  42. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">projectMember</span><span style="color: #800000;">"</span>, NodeType = NodeType.Array, MainEntity = <span style="color: #800000;">"</span><span style="color: #800000;">ProjectMember</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
  43. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> ProjectMember { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  44. }
  45. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  46. <span style="color: #808080;">///</span><span style="color: #008000;"> 项目组成员信息
  47. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  48. [Entity(<span style="color: #800000;">"</span><span style="color: #800000;">ProjectMember</span><span style="color: #800000;">"</span>, <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
  49. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> ProjectMember : BaseBEntity
  50. {
  51. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  52. <span style="color: #808080;">///</span><span style="color: #008000;"> 人员ID
  53. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  54. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">projectMemberID</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_10</span><span style="color: #800000;">"</span>, NodeType = NodeType.String, IsPK =<span style="color: #000000;"> BooleanType.True)]
  55. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> ProjectMemberID { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  56. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  57. <span style="color: #808080;">///</span><span style="color: #008000;"> 姓名
  58. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  59. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">projectMemberName</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_20</span><span style="color: #800000;">"</span>, NodeType =<span style="color: #000000;"> NodeType.String)]
  60. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> ProjectMemberName { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  61. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  62. <span style="color: #808080;">///</span><span style="color: #008000;"> 性别
  63. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  64. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">sex</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_30</span><span style="color: #800000;">"</span>, NodeType =<span style="color: #000000;"> NodeType.String)]
  65. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Sex { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }<br>
  66. </span><span style="color: #808080;"> ///</span> <span style="color: #808080;"><summary></span>
  67. <span style="color: #808080;">///</span><span style="color: #008000;"> 备注
  68. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  69. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">notes</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_110</span><span style="color: #800000;">"</span>, NodeType =<span style="color: #000000;"> NodeType.String)]
  70. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> Notes { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  71. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  72. <span style="color: #808080;">///</span><span style="color: #008000;"> 是否已删除
  73. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  74. [Property(FieldName = NodeOperation.Operation, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_200</span><span style="color: #800000;">"</span>, NodeType = NodeType.String, IsDeletedFlag =<span style="color: #000000;"> BooleanType.True)]
  75. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> IsDeleted { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  76. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  77. <span style="color: #808080;">///</span><span style="color: #008000;"> 创建时间
  78. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  79. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">createTime</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_210</span><span style="color: #800000;">"</span>, NodeType =<span style="color: #000000;"> NodeType.String)]
  80. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> CreateTime { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  81. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  82. <span style="color: #808080;">///</span><span style="color: #008000;"> 创建人
  83. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  84. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">creatorID</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_220_COL_220</span><span style="color: #800000;">"</span>, NodeType = NodeType.Json, MainEntity = <span style="color: #800000;">"</span><span style="color: #800000;">User</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
  85. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> CreatorID { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  86. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  87. <span style="color: #808080;">///</span><span style="color: #008000;"> 项目
  88. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  89. [Property(FieldName = <span style="color: #800000;">"</span><span style="color: #800000;">planProject</span><span style="color: #800000;">"</span>, ColumnName = <span style="color: #800000;">"</span><span style="color: #800000;">XMGL_20_COL_10</span><span style="color: #800000;">"</span>, NodeType = NodeType.Json, MainEntity = <span style="color: #800000;">"</span><span style="color: #800000;">PlanProject</span><span style="color: #800000;">"</span><span style="color: #000000;">)]
  90. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span> PlanProject { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span><span style="color: #000000;">; }
  91. }
  92. }</span>

 

 三、反射机制,分析实体特性、属性特性,将json对象数据保存到数据库。

  1. <span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
  2. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;
  3. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;
  4. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text;
  5. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Threading.Tasks;
  6. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Newtonsoft.Json;
  7. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.BEntity;
  8. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.Utility;
  9. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.Config;
  10. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.DBAccess;
  11. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Reflection;
  12. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.Utility;
  13. </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Standard.Frame.BLRuler
  14. {
  15. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> JsonToTable
  16. {
  17. </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> Save(<span style="color: #0000ff;">object</span><span style="color: #000000;"> inputJsonObj)
  18. {
  19. </span><span style="color: #0000ff;">try</span><span style="color: #000000;">
  20. {
  21. SaveJsonObj(inputJsonObj, </span><span style="color: #800000;">"</span><span style="color: #800000;">PlanProject</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">null</span><span style="color: #000000;">);
  22. }
  23. </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception e)
  24. {
  25. LogUtility.Write(DateTime.Now.ToString() </span>+ <span style="color: #800000;">"</span><span style="color: #800000;"> : </span><span style="color: #800000;">"</span> +<span style="color: #000000;"> e.Message);
  26. }
  27. }
  28. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  29. <span style="color: #808080;">///</span><span style="color: #008000;"> 保存输入的json对象
  30. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  31. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="inputJsonObj"></param></span>
  32. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="entityName"></param></span>
  33. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> SaveJsonObj(<span style="color: #0000ff;">object</span> inputJsonObj, <span style="color: #0000ff;">string</span> entityName, Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;"> tupleFk)
  34. {
  35. Dictionary</span><<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicReq =<span style="color: #000000;"> CommonFacade.ParseJsonObjToDic(inputJsonObj);
  36. Type type </span>=<span style="color: #000000;"> CommonFacade.GetEntityType(entityName);
  37. </span><span style="color: #0000ff;">string</span> tableName =<span style="color: #000000;"> CommonFacade.GetTableNameByType(type);
  38. System.Reflection.PropertyInfo[] properties </span>=<span style="color: #000000;"> type.GetProperties();
  39. </span><span style="color: #008000;">//</span><span style="color: #008000;">先保存主表数据(string类型的节点)</span>
  40. <span style="color: #0000ff;">object</span> recordID =<span style="color: #000000;"> SaveStringNode(dicReq, tableName, properties, tupleFk);
  41. </span><span style="color: #008000;">//</span><span style="color: #008000;">保存从表数据(array类型的节点)</span>
  42. <span style="color: #000000;"> SaveArrayNode(dicReq, properties, entityName, recordID);
  43. }
  44. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  45. <span style="color: #808080;">///</span><span style="color: #008000;"> 保存json对象中的字符串节点
  46. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  47. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="dicReq"></param></span>
  48. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tableName"></param></span>
  49. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="properties"></param></span>
  50. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tupleFk"></param></span>
  51. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  52. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">object</span> SaveStringNode(Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicReq, <span style="color: #0000ff;">string</span> tableName, System.Reflection.PropertyInfo[] properties,Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;"> tupleFk)
  53. {
  54. PreSqlAccess sqlAccess </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> PreSqlAccess();
  55. Dictionary</span><<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicTable = <span style="color: #0000ff;">new</span> Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;">();
  56. Tuple</span><<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> tuplePk =<span style="color: #000000;"> ParseStringNode(dicReq, properties, dicTable);
  57. </span><span style="color: #0000ff;">if</span> (tupleFk != <span style="color: #0000ff;">null</span><span style="color: #000000;">)
  58. {
  59. dicTable.Remove(tupleFk.Item1);
  60. dicTable.Add(tupleFk.Item1, tupleFk.Item2);
  61. }
  62. </span><span style="color: #0000ff;">object</span> recordID =<span style="color: #ff0000;"> sqlAccess.InsertOrUpdateDataSync(tableName, dicTable, tuplePk);//保存到数据库
  63. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> recordID;
  64. }
  65. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  66. <span style="color: #808080;">///</span><span style="color: #008000;"> 保存从表数据(数据类型为array的节点)
  67. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  68. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="dicReq"></param></span>
  69. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="properties"></param></span>
  70. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="recordID"></param></span>
  71. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> SaveArrayNode(Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicReq, System.Reflection.PropertyInfo[] properties, <span style="color: #0000ff;">string</span> mainEntityName, <span style="color: #0000ff;">object</span><span style="color: #000000;"> recordID)
  72. {
  73. System.Attribute[] attrs </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  74. </span><span style="color: #0000ff;">foreach</span> (System.Reflection.PropertyInfo p <span style="color: #0000ff;">in</span><span style="color: #000000;"> properties)
  75. {
  76. attrs </span>=<span style="color: #000000;"> System.Attribute.GetCustomAttributes(p);
  77. </span><span style="color: #0000ff;">foreach</span> (System.Attribute attr <span style="color: #0000ff;">in</span><span style="color: #000000;"> attrs)
  78. {
  79. </span><span style="color: #0000ff;">if</span> (attr <span style="color: #0000ff;">is</span><span style="color: #000000;"> PropertyAttribute)
  80. {
  81. PropertyAttribute propertyAttr </span>=<span style="color: #000000;"> (PropertyAttribute)attr;
  82. </span><span style="color: #0000ff;">if</span> (dicReq.ContainsKey(propertyAttr.FieldName) && propertyAttr.NodeType ==<span style="color: #000000;"> NodeType.Array)
  83. {
  84. Tuple</span><<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> tupleFk =<span style="color: #000000;"> GetTupleFKID(propertyAttr.MainEntity, mainEntityName, recordID);
  85. List</span><<span style="color: #0000ff;">object</span>> listObj =<span style="color: #000000;"> CommonFacade.ParseJsonObjToList(dicReq[propertyAttr.FieldName]);
  86. listObj.ForEach((inputJsonObj) </span>=><span style="color: #000000;">
  87. {
  88. SaveJsonObj(inputJsonObj, propertyAttr.MainEntity, tupleFk);
  89. });
  90. }
  91. }
  92. }
  93. }
  94. }
  95. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span><span style="color: #808080;">///</span><span style="color: #008000;"> 解析输入json对象中的字符串节点
  96. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  97. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="dicReq"></param></span>
  98. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="properties"></param></span>
  99. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  100. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> ParseStringNode(Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicReq, System.Reflection.PropertyInfo[] properties, Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;"> dicTable)
  101. {
  102. Tuple</span><<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> tuplePk = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  103. System.Attribute[] attrs </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  104. </span><span style="color: #0000ff;">foreach</span> (System.Reflection.PropertyInfo p <span style="color: #0000ff;">in</span><span style="color: #000000;"> properties)
  105. {
  106. attrs </span>=<span style="color: #000000;"> System.Attribute.GetCustomAttributes(p);
  107. </span><span style="color: #0000ff;">foreach</span> (System.Attribute attr <span style="color: #0000ff;">in</span><span style="color: #000000;"> attrs)
  108. {
  109. </span><span style="color: #0000ff;">if</span> (attr <span style="color: #0000ff;">is</span><span style="color: #000000;"> PropertyAttribute)
  110. {
  111. PropertyAttribute propertyAttr </span>=<span style="color: #000000;"> (PropertyAttribute)attr;
  112. </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (dicReq.ContainsKey(propertyAttr.FieldName))
  113. {
  114. </span><span style="color: #0000ff;">if</span> (propertyAttr.IsPK ==<span style="color: #000000;"> BooleanType.True)
  115. {</span><span style="color: #008000;">//</span><span style="color: #008000;">记录主键,备用</span>
  116. tuplePk = <span style="color: #0000ff;">new</span> Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;">(propertyAttr.ColumnName, dicReq[propertyAttr.FieldName]);
  117. </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
  118. }
  119. </span><span style="color: #0000ff;">if</span> (propertyAttr.IsDeletedFlag ==<span style="color: #000000;"> BooleanType.True)
  120. {</span><span style="color: #008000;">//</span><span style="color: #008000;">"是否删除" 这个标示列需要特殊处理</span>
  121. <span style="color: #0000ff;">if</span> (dicReq.ContainsKey(NodeOperation.Operation) && Convert.ToString(dicReq[propertyAttr.FieldName]) ==<span style="color: #000000;"> NodeOperationType.Deleted)
  122. dicTable.Add(propertyAttr.ColumnName, </span><span style="color: #800080;">1</span><span style="color: #000000;">);
  123. </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
  124. }
  125. </span><span style="color: #0000ff;">if</span> (propertyAttr.NodeType ==<span style="color: #000000;"> NodeType.String)
  126. dicTable.Add(propertyAttr.ColumnName, dicReq[propertyAttr.FieldName]);
  127. </span><span style="color: #0000ff;">if</span> (propertyAttr.NodeType ==<span style="color: #000000;"> NodeType.Json)
  128. dicTable.Add(propertyAttr.ColumnName,CommonFacade.GetPKID(dicReq[propertyAttr.FieldName], propertyAttr.MainEntity));
  129. }
  130. }
  131. }
  132. }
  133. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> tuplePk;
  134. }
  135. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span><span style="color: #808080;">///</span><span style="color: #008000;"> 将主表ID匹配到从表对应的外键
  136. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  137. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="inputJsonObj"></param></span>
  138. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="entityName"></param></span>
  139. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="mainEntityName"></param></span>
  140. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="recordID"></param></span>
  141. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  142. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> GetTupleFKID(<span style="color: #0000ff;">string</span> entityName, <span style="color: #0000ff;">string</span> mainEntityName, <span style="color: #0000ff;">object</span><span style="color: #000000;"> recordID)
  143. {
  144. Tuple</span><<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> tupleFK = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  145. Type type </span>=<span style="color: #000000;"> CommonFacade.GetEntityType(entityName);
  146. System.Reflection.PropertyInfo[] properties </span>=<span style="color: #000000;"> type.GetProperties();
  147. System.Attribute[] attrs </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
  148. </span><span style="color: #0000ff;">foreach</span> (System.Reflection.PropertyInfo p <span style="color: #0000ff;">in</span><span style="color: #000000;"> properties)
  149. {
  150. attrs </span>=<span style="color: #000000;"> System.Attribute.GetCustomAttributes(p);
  151. </span><span style="color: #0000ff;">foreach</span> (System.Attribute attr <span style="color: #0000ff;">in</span><span style="color: #000000;"> attrs)
  152. {
  153. </span><span style="color: #0000ff;">if</span> (attr <span style="color: #0000ff;">is</span><span style="color: #000000;"> PropertyAttribute)
  154. {
  155. PropertyAttribute propertyAttr </span>=<span style="color: #000000;"> (PropertyAttribute)attr;
  156. </span><span style="color: #0000ff;">if</span> (propertyAttr.NodeType == NodeType.Json && propertyAttr.MainEntity ==<span style="color: #000000;"> mainEntityName)
  157. {
  158. tupleFK </span>= <span style="color: #0000ff;">new</span> Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;">(propertyAttr.ColumnName,recordID);
  159. </span><span style="color: #0000ff;">goto</span><span style="color: #000000;"> outer;
  160. }
  161. }
  162. }
  163. }
  164. outer:
  165. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> tupleFK;
  166. }
  167. }
  168. }</span>

 

 四、操作数据库

  1. <span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
  2. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;
  3. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;
  4. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text;
  5. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Threading.Tasks;
  6. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Data;
  7. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Data.SqlClient;
  8. </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Standard.Frame.Config;
  9. </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Standard.Frame.DBAccess
  10. {</span>
  11. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> PreSqlAccess
  12. {
  13. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span><span style="color: #808080;">///</span><span style="color: #008000;"> 同步插入记录
  14. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  15. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tablename"></param></span>
  16. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="dicTable"></param></span>
  17. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  18. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">object</span> InsertRecordSync(<span style="color: #0000ff;">string</span> tablename, Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;"> dicTable)
  19. {
  20. StringBuilder columns </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
  21. StringBuilder datas </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
  22. List</span><IDataParameter> parameters = <span style="color: #0000ff;">new</span> List<IDataParameter><span style="color: #000000;">();
  23. </span><span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">var</span> item <span style="color: #0000ff;">in</span><span style="color: #000000;"> dicTable)
  24. {
  25. columns.Append(item.Key).Append(</span><span style="color: #800000;">"</span><span style="color: #800000;">,</span><span style="color: #800000;">"</span><span style="color: #000000;">);
  26. datas.Append(</span><span style="color: #800000;">"</span><span style="color: #800000;">@</span><span style="color: #800000;">"</span> + item.Key).Append(<span style="color: #800000;">"</span><span style="color: #800000;">,</span><span style="color: #800000;">"</span><span style="color: #000000;">);
  27. parameters.Add(</span><span style="color: #0000ff;">new</span> SqlParameter(<span style="color: #800000;">"</span><span style="color: #800000;">@</span><span style="color: #800000;">"</span> +<span style="color: #000000;"> item.Key, item.Value));
  28. }
  29. StringBuilder sqlCommand </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
  30. sqlCommand.Append(</span><span style="color: #800000;">"</span><span style="color: #800000;"> insert into </span><span style="color: #800000;">"</span><span style="color: #000000;">);
  31. sqlCommand.Append(tablename).Append(</span><span style="color: #800000;">"</span><span style="color: #800000;"> ( </span><span style="color: #800000;">"</span>).Append(columns.ToString().Trim(<span style="color: #0000ff;">new</span> <span style="color: #0000ff;">char</span>[] { <span style="color: #800000;">‘</span><span style="color: #800000;">,</span><span style="color: #800000;">‘</span> })).Append(<span style="color: #800000;">"</span><span style="color: #800000;"> ) </span><span style="color: #800000;">"</span><span style="color: #000000;">);
  32. sqlCommand.Append(</span><span style="color: #800000;">"</span><span style="color: #800000;"> values ( </span><span style="color: #800000;">"</span>).Append(datas.ToString().Trim(<span style="color: #0000ff;">new</span> <span style="color: #0000ff;">char</span>[] { <span style="color: #800000;">‘</span><span style="color: #800000;">,</span><span style="color: #800000;">‘</span> })).Append(<span style="color: #800000;">"</span><span style="color: #800000;"> ) </span><span style="color: #800000;">"</span><span style="color: #000000;">);
  33. SqlAccess sqlAccess </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlAccess();
  34. </span><span style="color: #0000ff;">return</span> sqlAccess.InsertRecordSync(tablename, sqlCommand.ToString(), CommandType.Text, parameters.ToArray(), <span style="color: #0000ff;">null</span><span style="color: #000000;">);
  35. }
  36. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span><span style="color: #808080;">///</span><span style="color: #008000;"> 同步更新记录
  37. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  38. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tablename"></param></span>
  39. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="dicTable"></param></span>
  40. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tuplePk"></param></span>
  41. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  42. <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">object</span> UpdateRecordSync(<span style="color: #0000ff;">string</span> tablename, Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicTable, Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>><span style="color: #000000;"> tuplePk)
  43. {
  44. StringBuilder columnValues </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
  45. List</span><IDataParameter> parameters = <span style="color: #0000ff;">new</span> List<IDataParameter><span style="color: #000000;">();
  46. </span><span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">var</span> item <span style="color: #0000ff;">in</span><span style="color: #000000;"> dicTable)
  47. {
  48. columnValues.Append(item.Key).Append(</span><span style="color: #800000;">"</span><span style="color: #800000;">=</span><span style="color: #800000;">"</span>).Append(<span style="color: #800000;">"</span><span style="color: #800000;">@</span><span style="color: #800000;">"</span> + item.Key).Append(<span style="color: #800000;">"</span><span style="color: #800000;">,</span><span style="color: #800000;">"</span><span style="color: #000000;">);
  49. parameters.Add(</span><span style="color: #0000ff;">new</span> SqlParameter(<span style="color: #800000;">"</span><span style="color: #800000;">@</span><span style="color: #800000;">"</span> +<span style="color: #000000;"> item.Key, item.Value));
  50. }
  51. StringBuilder sqlCommand </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
  52. sqlCommand.Append(</span><span style="color: #800000;">"</span><span style="color: #800000;"> update </span><span style="color: #800000;">"</span><span style="color: #000000;">).Append(tablename);
  53. sqlCommand.Append(</span><span style="color: #800000;">"</span><span style="color: #800000;"> set </span><span style="color: #800000;">"</span><span style="color: #000000;">);
  54. sqlCommand.Append(columnValues.ToString().Trim(</span><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">char</span>[] { <span style="color: #800000;">‘</span><span style="color: #800000;">,</span><span style="color: #800000;">‘</span><span style="color: #000000;"> }));
  55. sqlCommand.Append(</span><span style="color: #800000;">"</span><span style="color: #800000;"> where </span><span style="color: #800000;">"</span>).Append(tuplePk.Item1).Append(<span style="color: #800000;">"</span><span style="color: #800000;">=</span><span style="color: #800000;">"</span><span style="color: #000000;">).Append(tuplePk.Item2);
  56. SqlAccess sqlAccess </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlAccess();
  57. </span><span style="color: #0000ff;">return</span> sqlAccess.ExecuteNonQuerySync(sqlCommand.ToString(), CommandType.Text, parameters.ToArray(), <span style="color: #0000ff;">null</span><span style="color: #000000;">);
  58. }
  59. </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
  60. <span style="color: #808080;">///</span><span style="color: #008000;"> 插入或者更新记录 返回记录ID
  61. </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
  62. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tablename"></param></span>
  63. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="dicTable"></param></span>
  64. <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="tuplePk"></param></span>
  65. <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
  66. <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">object</span> InsertOrUpdateDataSync(<span style="color: #0000ff;">string</span> tablename, Dictionary<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> dicTable, Tuple<<span style="color: #0000ff;">string</span>, <span style="color: #0000ff;">object</span>> tuplePk = <span style="color: #0000ff;">null</span><span style="color: #000000;">)
  67. {
  68. </span><span style="color: #0000ff;">object</span> recordID = <span style="color: #0000ff;">default</span>(<span style="color: #0000ff;">object</span><span style="color: #000000;">);
  69. </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (dicTable.ContainsKey(NodeOperation.Operation))
  70. {
  71. </span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (Convert.ToString(dicTable[NodeOperation.Operation]))
  72. {
  73. </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> NodeOperationType.Added:
  74. dicTable.Remove(NodeOperation.Operation);
  75. recordID</span>=<span style="color: #000000;">InsertRecordSync(tablename, dicTable);
  76. </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
  77. </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> NodeOperationType.Changed:
  78. </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> NodeOperationType.Deleted:
  79. dicTable.Remove(NodeOperation.Operation);
  80. recordID </span>=<span style="color: #000000;"> tuplePk.Item2;
  81. UpdateRecordSync(tablename, dicTable, tuplePk);
  82. </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
  83. </span><span style="color: #0000ff;">default</span>: ; <span style="color: #0000ff;">break</span><span style="color: #000000;">;
  84. }
  85. }
  86. </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> recordID;
  87. }
  88. }
  89. }</span>

 

 

 

 

将json对象数据保存到数据库对应的表中

标签:

人气教程排行