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] + "??类型转换异常
    ");
                            }
    
    
                        }
                    }
                }
            }
  • 相关阅读:
    合并报表优化记录
    如何在后台代码中执行原生sql?
    eclipse从数据库逆向生成Hibernate实体类
    用Eclipse进行远程Debug代码
    hibernate自动生成数据库表
    hibernate自动生成数据库表
    php通过UNIX源码编译安装
    php设置方法
    php其他配制选项
    终于做出了目录认证!
  • 原文地址:https://www.cnblogs.com/kexb/p/7512428.html
Copyright © 2011-2022 走看看