/// <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[];
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\r\n");
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] + "??类型转换异常\r\n");
} }
}
}
}

检测空值,以及会不会出现mapping类型不一致的问题的更多相关文章

  1. Solidity之mapping类型

    映射是一种引用类型,存储键值对.它的定义是:mapping(key => value),概念上与java中的map,python中的字典类型类似,但在使用上有比较多的限制. 一.mapping定 ...

  2. ES7.x mapping 类型

    在将ES从2.3 升级到7.3版本的过程中,mapping是一个过不去的坎,很多类型都发生了变化 7.x常用数据类型:text.keyword.number.array.range.boolean.d ...

  3. FME之于规划CAD数据质量检测

    最近琢磨规划CAD数据转换入库GIS方面的技术问题,看过一些前辈的文章/文献,对于使用FME WorkBench方面,有了一些了解,往往直接转换数据丢失比较严重,而且GIS对图形属性和空间拓扑比较严格 ...

  4. ElasticSearch(5)-Mapping

    一.Mapping概述 映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了 ...

  5. 目标检测(二) SPPNet

    引言 先简单回顾一下R-CNN的问题,每张图片,通过 Selective Search 选择2000个建议框,通过变形,利用CNN提取特征,这是非常耗时的,而且,形变必然导致信息失真,最终影响模型的性 ...

  6. Dynamic Mapping和常见字段类型

    原文:Dynamic Mapping和常见字段类型 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...

  7. ElasticSearch7.3 学习之Mapping核心数据类型及dynamic mapping

    1.mapping的核心数据类型以及dynamic mapping 1.1 核心的数据类型 string :text and keyword,byte,short,integer,long,float ...

  8. JavaScript系列文章:不能不看的数据类型检测

    由于JavaScript是门松散类型语言,定义变量时没有类型标识信息,并且在运行期可以动态更改其类型,所以一个变量的类型在运行期是不可预测的,因此,数据类型检测在开发当中就成为一个必须要了解和掌握的知 ...

  9. DPI深度包检测

    最近在读网络协议方面的论文,接触到DPI技术.博主是个小白,这里写些查到的笔记. 原文出处因为比较多,杂乱.百度文库和许多地方都有,就不贴链接了. 1. DPI 全称为"Deep Packe ...

随机推荐

  1. 国内各类“壳子”浏览器,userAgent 一览

    [测试环境]:测试日期:2014-6-20 我本机的chrome是36.0的,IE是10.0的.下列各浏览器大多数都是最新版,少数是半年以内的版本. 内核 chrome 版本 36.0 userAge ...

  2. springboot之登录注册

    springboot之登录注册 目录结构 pom.xml <?xml version="1.0" encoding="UTF-8"?> <pr ...

  3. DataSnap高级技术(7)—TDSServerClass中Lifecycle生命周期三种属性说明

    From http://blog.csdn.net/sunstone/article/details/5282666 DataSnap高级技术(7)—TDSServerClass中Lifecycle生 ...

  4. javaScript日期

    日历 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <head> <t ...

  5. VB6 如何创建一个标准控制台程序

    打开 VB6 并新建一个标准EXE程序,把窗口删掉,然后再加入一个模块. 在模块中加入AllocConsole.FreeConsole.SetConsoleTitle.Sleep的API声明: Pub ...

  6. windows10配置java开发环境

    一.下载jdk 二.安装jdk路径,这个路径不能包含中文名 三.系统会提示安装jre,安装目录不要是jdk的安装目录,否则会覆盖掉jdk目录下的jre目录 四. .;%JAVA_HOME%\lib;% ...

  7. NUMA体系结构介绍

    为什么会有NUMA? 在NUMA架构出现前,CPU欢快的朝着频率越来越高的方向发展.受到物理极限的挑战,又转为核数越来越多的方向发展.如果每个core的工作性质都是share-nothing(类似于m ...

  8. 预习 jdbc 技术简介

    JDBC简介: JDBC全称为java database connectivity,是sun公司指定的java数据库连接技术的简称. 他是sun公司和数据库开发商共同开发出来的独立于DBMS的应用程序 ...

  9. frm和ibd恢复sql文件的操作

    情况:有mysql中data文件(仅仅一个数据库) 操作:frm和ibd恢复sql文件的操作 1.创建相同名字的库xxx 2.把ibdata1替换成原来的 3.把数据库xxx内内容全部替换为原来的 完 ...

  10. ubuntu下安装.deb包的安装方法

    ubuntu16.04的软件中心应该是有bug,安装不了第三方.deb文件,我们只有使用dpkg -i 或者gdebi的方式安装,我使用的是后者,因为后者功能更加强大.要使用gdebi命令先要安装它: ...