博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XCode最佳实践之最佳数据类型
阅读量:6231 次
发布时间:2019-06-22

本文共 1471 字,大约阅读时间需要 4 分钟。

与其它ORM框架相比,XCode拥有最强的多数据库正向反向工程,暂时还没有发现能在这点上超于XCode的,哈哈!

但是,XCode的多数据库反向工程,也是有代价的,不同数据库的数据类型相差十万八千里,我们不可能完全支持。
所以,我们只做了常见的一些数据类型支持,但是这些已经足以满足99%的要求。
最佳数据类型如下:
1,整型。Int32是标准配置,这个必须有的。在Oracle,整型就是小数为0的Numeric
2,长整型。Int64,大部分数据库都有吧。
3,短整型。Int16,这个要小心了,似乎有些数据库不支持,不支持时XCode会自动选Int32,兄弟就不要省这点存储空间啦。
4,布尔型。Boolean,大部分数据库支持,MySql不支持,它一般用一个枚举Y/N来实现,XCode有支持。
5,浮点数。单精度Fload双精度Double,建议一律用Double,否则不同数据库很难统一,还有千万小心精度设置和小数位数,XCode反向工程可能不能把精度和小数位数完美的迁移到其它类型数据库,同类型没有问题。
6,货币。Decimal,货币类型必须有的,对应MSSQL的Money。开发的时候小心,不要拿Decimal判断两个值是否相等,应该相减判断差值是否小于0.000001,这个小数自己看情况定。
7,时间日期。DateTime,各种数据库,一律用时间日期DateTime,不支持单独的Date或Time的迁移。这个类型是XCode里面最为痛苦的一个类型,单独的Date和Time根本无法实现不同类型数据库的兼容。
8,字符串。String,在MSSQL一律用nvarchar,Unicode变长。字符串类型是唯一完整支持不同数据库设置长度的,以上类型全部不能完整支持。
9,大文本。String,在MSSQL一律用ntext。在.Net中同为String,根据不同数据库的字符串最大长度(MSSQL是4000),识别为nvarchar还是ntext。
最佳体验:
1,单一主键,建议用自增ID。XCode支持迁移自增字段的数据,当然,如果需要合并数据,那得自己处理逻辑
2,建立各种索引。
最差体验:
0,零号是最最最糟糕的,XCode不支持可空类型,所以千万不要让null和“”有不同的业务意义,各种类型的默认值代表无效数据。
1,除了字符串长度外,其它类型绝对绝对,尽可能的不要设置其它属性,包括长度、精度、小数位数,否则XCode不能实现完美迁移
2,XCode目前不支持各种数据库的外键。新增的表间关系是通过猜测得到的,规则:字段名等于另一个表名加主键名时,认为是外键
3,不要用Guid类型和二进制类型,XCode只能支持正向工程,不能支持它们的反向工程。可用nvarchar(32)替代Guid
4,字符串尽量不要用varchar/char等,因为不同数据库甚至相同数据库的不同版本,差别好大。这样省不了多少空间。
5,尽可能的不要用默认值。目前只有当前时间默认值支持好一点,newid()也有简单的支持,这块太痛苦了,也许将来不支持了。
XCode内部没有类型映射表,别乱猜测!!!
ADO.Net的架构里面有一个DataTypes的模式,XCode利用的正是它,所以,什么字段类型对应什么.Net类型,是各种数据库驱动自身说了算,不是XCode说了算,所以我们也不知道所有类型是否支持。
反正这么多年,我们占用这些类型,就已经足够了。

 

 

最后补一句:
我们只做最常见的80%日常工作,什么特别的情况,自己想办法!

转载地址:http://dgqna.baihongyu.com/

你可能感兴趣的文章
JavaScript---网络编程(11)--DHTML技术演示(4)-单选框/下拉菜单/添加文件
查看>>
解决WebView调用loadData()方法显示乱码的问题
查看>>
ThinkPHP Where 条件中使用表达式
查看>>
WPF 引用DLL纯图像资源包类库中的图片
查看>>
Redis集群_3.redis主从自动切换Sentinel(转)
查看>>
Android零基础入门第45节:GridView简单使用
查看>>
读书笔记---操作系统概论
查看>>
从ASCII聊起
查看>>
大数据和Hadoop时代的维度建模和Kimball数据集市
查看>>
Android官方入门文档[3]构建一个简单的用户界面
查看>>
编写出色CSS代码的13个建议
查看>>
Alluxio之IO选项:读写类型
查看>>
ECS centos7安装elasticsearch2.4.1填坑日记
查看>>
调查显示:企业挣扎于攻击检测和分析中
查看>>
「消失」的无人机 | IFA 2017现场直击
查看>>
VIM复制指令yank
查看>>
【网络编程6】Java与C语言套接字Socket通信的例子
查看>>
Linux常用开发服务器的代码[Linux zhoulifa ]
查看>>
通过反射克隆对象,对象复制(克隆),对象合并工具类 升级版
查看>>
企业网络安全浅析
查看>>