/// <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. C# DbHelperSQL 类,从东软生成器提取而来

    DBHelerSQL,可以结合东软生成器写简单三层结构,也可以自己去调用执行相关SQL语句 直接上代码: using System; using System.Collections; using S ...

  2. ldap快速配置

    1.[yum lamp环境] yum  -y install httpd httpd-devel mysql mysql-server mysql-devel php php-mysql php-co ...

  3. 12.mysql高级查询

    1. mysql 支持三种类型的连接查询: on 后面跟的是关联条件 内连接查询 select s.name,c.name from students as s inner join classes ...

  4. eclipse使用ctrl+shift+F格式化代码失效

    通常情况出现这种问题是组合快捷键和别的软件快捷键冲突了, 最常见的是和搜狗输入法冲突, 在设置中找到搜狗输入法然后把冲突的快捷键取消掉就可以了.

  5. Qt-状态机

    //以下示例是QT示例中的appchooser例子,使用状态机来进行图标的交互. #include <QtCore> #include <QtWidgets> class Pi ...

  6. FileOperator 文件(夹)操作类

    public class FileOperator { /** * 复制文件目录 * @param srcDir 要复制的源目录 eg:/mnt/sdcard/DB * @param destDir ...

  7. 使用Jena执行SPARQL的Select和Ask查询

    使用Jena执行SPARQL的Select和ask查询 提供基本的接口和实现类,可在其他代码中直接调用 Select查询 接口 /** * The interface Select dao. * 本体 ...

  8. 在eclipse中建立子级源码文件夹

    在eclipse中建立子级源码文件夹 右键点击项目 ---->new ---->source folder--->输入 src/main  --->勾选update exclu ...

  9. springmvc获取资源文件的两种方式(超简单)

    1 比如我们在sc目录下新建一个db.properties文件内容如下 DriverClass=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306 ...

  10. pod优先级与抢占测试

    # kubectl describe node k8s-n2Name:               k8s-n2Roles:              <none>Labels:      ...