123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- namespace Ant.ORM
- {
- public class DataFieldMeta
- {
- PropertyInfo pinfo;
- FiledMetaData md;
- /// <summary>
- ///
- /// </summary>
- public DataFieldMeta(PropertyInfo info, FiledMetaData data)
- {
- pinfo = info;
- md = data;
- }
- /// <summary>
- /// 获取属性值
- /// </summary>
- /// <returns></returns>
- public FiledMetaData GetAllMetaData()
- {
- GetDataFieldMeta();
- GetReferenceMeta();
- GetChildMeta();
- return md;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public void GetDataFieldMeta()
- {
- ///也能实现两种写法
- // if (pinfo.IsDefined(typeof(DataFieldColumnAttribute), false))
- //{
- // var dfa = (DataFieldColumnAttribute)pinfo.GetCustomAttributes(typeof(DataFieldColumnAttribute), false)[0];
-
- DataFieldColumnAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(DataFieldColumnAttribute)) as DataFieldColumnAttribute;
- if (dfa.IfNotNull())
- {
- DataFieldMetaData dfMetaData = new DataFieldMetaData();
- dfMetaData.ColumnName = dfa.Name;
- dfMetaData.ColumnType = dfa.DbType;
- dfMetaData.DefaultValue = dfa.DefaultValue;
- dfMetaData.IsPrimaryKey = dfa.IsPrimaryKey;
- dfMetaData.IsForeignKey = dfa.IsForeignKey;
- dfMetaData.IsNullable = dfa.IsNullable;
- dfMetaData.IsAutoincrement = dfa.IsAutoincrement;
- dfMetaData.PropertyName = pinfo.Name;
- dfMetaData.PropertyType = pinfo.PropertyType;
- //md.FieldMeteDatas.Add(pinfo.Name, dfMetaData);
- //if (dfa.IsPrimaryKey && string.IsNullOrEmpty(md.PrimaryKey))
- // md.PrimaryKey = pinfo.Name;
- }
- }
- /// <summary>
- /// 获取扩展属性
- /// </summary>
- /// <returns></returns>
- public void GetReferenceMeta()
- {
- ReferenceAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(ReferenceAttribute)) as ReferenceAttribute;
- if (dfa.IfNotNull())
- {
- ReferenceMataData f = new ReferenceMataData();
- f.Key = dfa.Key;
- f.DataType = dfa.DataType;
- f.ForeignKey = dfa.ForeignKey;
- f.ForeignTable = dfa.ForeignTable;
- f.MainKey = dfa.MainKey;
- f.ShowField = dfa.ShowField;
- //md.ReferenceObjects.Add(f.Key, f);
- }
- }
- /// <summary>
- /// 获取关联对象
- /// </summary>
- /// <returns></returns>
- public void GetChildMeta()
- {
- ChildAttribute dfa = Attribute.GetCustomAttribute(pinfo, typeof(ChildAttribute)) as ChildAttribute;
- if (dfa.IfNotNull())
- {
- //关联对象
- ChildMataData cf = new ChildMataData();
- //if (md.ChildObjects.ContainsKey(dfa.Key))
- //{
- // cf = md.ChildObjects[dfa.Key];
- // cf.ShowField.Add(dfa.ShowField);
- //}
- //else
- //{
- // cf.MainTable = dfa.MainTable;
- // cf.DataType = dfa.DataType;
- // cf.ParentTableFields = dfa.ParentTableFields;
- // cf.ChildTableFields = dfa.ChildTableFields;
- // cf.ChildTable = dfa.ChildTable;
- // cf.Key = dfa.Key;
- // cf.ShowField.Add(dfa.ShowField);
- //}
- //md.ChildObjects.Add(cf.Key, cf);
- }
- }
- }
- }
|