zoukankan      html  css  js  c++  java
  • 检测空值,以及会不会出现mapping类型不一致的问题

       /// <summary>
            /// 检测空值,以及会不会出现mapping类型不一致的问题
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="nullsb1"></param>
            /// <param name="errorsb"></param>
            public static void CheckHibernateMappingType<T>(out StringBuilder nullsb1,out StringBuilder errorsb) where T:Framework.Domain.Entity,new()
            {
                nullsb1 = new StringBuilder();
                errorsb = new StringBuilder();
                var ctx = Spring.Context.Support.ContextRegistry.GetContext();
                var Dao = GetDao();
                var mapping = ((Spring.Data.NHibernate.LocalSessionFactoryObject)ctx.GetObject("&SessionFactory")).Configuration.GetClassMapping(typeof(T));
                var pmap = mapping.PropertyIterator;
                var tableName1 = mapping.Table.Name;
                var table = Dao.ExecuteDataSet(new QueryInfo() { CustomSQL = "select * from " + tableName1 }).Tables[0];
                Hashtable columnsType = new Hashtable();
                foreach (DataColumn col in table.Columns)
                {
                    columnsType.Add(col.ColumnName, col.DataType.Name);
                }
                string primaryKey = ((NHibernate.Mapping.Column)(mapping.Key.ColumnIterator.FirstOrDefault())).Name;
                StringBuilder sb = new StringBuilder();
                StringBuilder sb1 = new StringBuilder();
                foreach (DataRow dr in table.Rows)
                {
                    foreach (var item in pmap)
                    {
                        NHibernate.Mapping.Column c = (NHibernate.Mapping.Column)item.ColumnIterator.FirstOrDefault();
    
    
    
                        //1对多的属性如children没有对应的列
                        if (c != null)
                        {
                            string columnTypeName = columnsType[c.Name].ToString();
                            try
                            {
                                if (dr[c.Name] is DBNull)
                                {
                                    nullsb1.Append("主键" + dr[primaryKey].ToString() + "" + c.Name + "约定类型为:" + columnTypeName + "值为:NULL
    ");
                                    continue;
                                }
                                switch (columnTypeName)
                                {
                                    case "String":
    
                                        break;
                                    case "Int16":
                                        Convert.ToInt16(dr[c.Name]);
                                        break;
                                    case "Int32":
                                        Convert.ToInt32(dr[c.Name]);
                                        break;
                                    case "Int64":
                                        Convert.ToInt64(dr[c.Name]);
                                        break;
    
                                    case "Decimal":
                                        Convert.ToDecimal(dr[c.Name]);
                                        break;
                                    case "DateTime":
    
                                        Convert.ToDateTime(dr[c.Name]);
                                        break;
                                    case "Boolean":
                                    case "bool":
                                        Convert.ToBoolean(dr[c.Name]);
                                        break;
                                    default:
                                        break;
                                }
                            }
                            catch (Exception ex)
                            {
    
                                sb.Append("主键" + dr[primaryKey].ToString() + "" + c.Name + "约定类型为:" + columnTypeName + "值为:" + dr[c.Name] + "??类型转换异常
    ");
                            }
    
    
                        }
                    }
                }
            }
  • 相关阅读:
    POJ 3114 Tarjan+Dijkstra
    278. First Bad Version
    209. Minimum Size Subarray Sum
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    710. Random Pick with Blacklist
    767. Reorganize String
    524. Longest Word in Dictionary through Deleting
    349. Intersection of Two Arrays
    350. Intersection of Two Arrays II
  • 原文地址:https://www.cnblogs.com/kexb/p/7512428.html
Copyright © 2011-2022 走看看