检测空值,以及会不会出现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[];
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类型不一致的问题的更多相关文章
- Solidity之mapping类型
映射是一种引用类型,存储键值对.它的定义是:mapping(key => value),概念上与java中的map,python中的字典类型类似,但在使用上有比较多的限制. 一.mapping定 ...
- ES7.x mapping 类型
在将ES从2.3 升级到7.3版本的过程中,mapping是一个过不去的坎,很多类型都发生了变化 7.x常用数据类型:text.keyword.number.array.range.boolean.d ...
- FME之于规划CAD数据质量检测
最近琢磨规划CAD数据转换入库GIS方面的技术问题,看过一些前辈的文章/文献,对于使用FME WorkBench方面,有了一些了解,往往直接转换数据丢失比较严重,而且GIS对图形属性和空间拓扑比较严格 ...
- ElasticSearch(5)-Mapping
一.Mapping概述 映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了 ...
- 目标检测(二) SPPNet
引言 先简单回顾一下R-CNN的问题,每张图片,通过 Selective Search 选择2000个建议框,通过变形,利用CNN提取特征,这是非常耗时的,而且,形变必然导致信息失真,最终影响模型的性 ...
- Dynamic Mapping和常见字段类型
原文:Dynamic Mapping和常见字段类型 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...
- ElasticSearch7.3 学习之Mapping核心数据类型及dynamic mapping
1.mapping的核心数据类型以及dynamic mapping 1.1 核心的数据类型 string :text and keyword,byte,short,integer,long,float ...
- JavaScript系列文章:不能不看的数据类型检测
由于JavaScript是门松散类型语言,定义变量时没有类型标识信息,并且在运行期可以动态更改其类型,所以一个变量的类型在运行期是不可预测的,因此,数据类型检测在开发当中就成为一个必须要了解和掌握的知 ...
- DPI深度包检测
最近在读网络协议方面的论文,接触到DPI技术.博主是个小白,这里写些查到的笔记. 原文出处因为比较多,杂乱.百度文库和许多地方都有,就不贴链接了. 1. DPI 全称为"Deep Packe ...
随机推荐
- linux上安装vsftpd
介绍:在前几篇博客中博主介绍了,怎么用java语言搭建一个简单的网站.如果有些小伙伴想把自己做的网站发布到服务器上让别人访问的话,不妨可以关注博主的博客,博客会在接下来的几篇博客中介绍怎么把一个网站发 ...
- selenium+python自动化96-执行jquery报:$ is not defined
前言 背景介绍:做wap页面自动化的时候,把url地址直接输入到浏览器(chrome浏览器有手机wap模式)上测试,有个按钮死活点不到,用wap模式的触摸事件也无法解决,后来想用jquery去执行点击 ...
- 过滤器 ;spring拦截器 切片 小结
1. springMVc的拦截器 实现HandlerInterceptor接口,如下: public class HandlerInterceptor1 implements HandlerInter ...
- java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
转自:https://www.cnblogs.com/EasonJim/p/6561666.html 若出现:Invalid escape sequence (valid ones are \b ...
- Declaration terminated incorrectly 讨厌 这样就不可以了
#include "vcl.fctreeview.hpp"#include "RM_Class.hpp"#include "RM_Common.hpp ...
- LiveBinding应用 dataBind 数据绑定
http://blog.csdn.net/embarcaderochina/article/details/50352193 firemonkey grid/listview dataBind,数据绑 ...
- VB6 MsgBox 函数
在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮. MsgBox(prompt[, buttons][, title][, helpfile, context]) 参数 promp ...
- canal 常用配置
https://github.com/alibaba/canal/wiki/AdminGuide canal.instance.filter.regex 监控哪些表的正则配置 如下: mysql 数据 ...
- jsfl 改变舞台宽高
fl.getDocumentDOM().height= 680; fl.getDocumentDOM().width= 550;
- eclipse菜单栏工具
1. new Class 和 new Package 通过右键->new -> 找到java->class 方式太慢. 在window->perspective -> c ...