DataFieldMeta.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Text;
  6. namespace Ant.ORM
  7. {
  8. public class DataFieldMeta
  9. {
  10. PropertyInfo pinfo;
  11. FiledMetaData md;
  12. /// <summary>
  13. ///
  14. /// </summary>
  15. public DataFieldMeta(PropertyInfo info, FiledMetaData data)
  16. {
  17. pinfo = info;
  18. md = data;
  19. }
  20. /// <summary>
  21. /// 获取属性值
  22. /// </summary>
  23. /// <returns></returns>
  24. public FiledMetaData GetAllMetaData()
  25. {
  26. GetDataFieldMeta();
  27. GetReferenceMeta();
  28. GetChildMeta();
  29. return md;
  30. }
  31. /// <summary>
  32. ///
  33. /// </summary>
  34. /// <returns></returns>
  35. public void GetDataFieldMeta()
  36. {
  37. ///也能实现两种写法
  38. // if (pinfo.IsDefined(typeof(DataFieldColumnAttribute), false))
  39. //{
  40. // var dfa = (DataFieldColumnAttribute)pinfo.GetCustomAttributes(typeof(DataFieldColumnAttribute), false)[0];
  41. DataFieldColumnAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(DataFieldColumnAttribute)) as DataFieldColumnAttribute;
  42. if (dfa.IfNotNull())
  43. {
  44. DataFieldMetaData dfMetaData = new DataFieldMetaData();
  45. dfMetaData.ColumnName = dfa.Name;
  46. dfMetaData.ColumnType = dfa.DbType;
  47. dfMetaData.DefaultValue = dfa.DefaultValue;
  48. dfMetaData.IsPrimaryKey = dfa.IsPrimaryKey;
  49. dfMetaData.IsForeignKey = dfa.IsForeignKey;
  50. dfMetaData.IsNullable = dfa.IsNullable;
  51. dfMetaData.IsAutoincrement = dfa.IsAutoincrement;
  52. dfMetaData.PropertyName = pinfo.Name;
  53. dfMetaData.PropertyType = pinfo.PropertyType;
  54. //md.FieldMeteDatas.Add(pinfo.Name, dfMetaData);
  55. //if (dfa.IsPrimaryKey && string.IsNullOrEmpty(md.PrimaryKey))
  56. // md.PrimaryKey = pinfo.Name;
  57. }
  58. }
  59. /// <summary>
  60. /// 获取扩展属性
  61. /// </summary>
  62. /// <returns></returns>
  63. public void GetReferenceMeta()
  64. {
  65. ReferenceAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(ReferenceAttribute)) as ReferenceAttribute;
  66. if (dfa.IfNotNull())
  67. {
  68. ReferenceMataData f = new ReferenceMataData();
  69. f.Key = dfa.Key;
  70. f.DataType = dfa.DataType;
  71. f.ForeignKey = dfa.ForeignKey;
  72. f.ForeignTable = dfa.ForeignTable;
  73. f.MainKey = dfa.MainKey;
  74. f.ShowField = dfa.ShowField;
  75. //md.ReferenceObjects.Add(f.Key, f);
  76. }
  77. }
  78. /// <summary>
  79. /// 获取关联对象
  80. /// </summary>
  81. /// <returns></returns>
  82. public void GetChildMeta()
  83. {
  84. ChildAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(ChildAttribute)) as ChildAttribute;
  85. if (dfa.IfNotNull())
  86. {
  87. //关联对象
  88. ChildMataData cf = new ChildMataData();
  89. //if (md.ChildObjects.ContainsKey(dfa.Key))
  90. //{
  91. // cf = md.ChildObjects[dfa.Key];
  92. // cf.ShowField.Add(dfa.ShowField);
  93. //}
  94. //else
  95. //{
  96. // cf.MainTable = dfa.MainTable;
  97. // cf.DataType = dfa.DataType;
  98. // cf.ParentTableFields = dfa.ParentTableFields;
  99. // cf.ChildTableFields = dfa.ChildTableFields;
  100. // cf.ChildTable = dfa.ChildTable;
  101. // cf.Key = dfa.Key;
  102. // cf.ShowField.Add(dfa.ShowField);
  103. //}
  104. //md.ChildObjects.Add(cf.Key, cf);
  105. }
  106. }
  107. }
  108. }