XCode最佳实践之最佳数据类型

简介: 与其它ORM框架相比,XCode拥有最强的多数据库正向反向工程,暂时还没有发现能在这点上超于XCode的,哈哈!但是,XCode的多数据库反向工程,也是有代价的,不同数据库的数据类型相差十万八千里,我们不可能完全支持。

与其它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%日常工作,什么特别的情况,自己想办法!
我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
|
6月前
|
数据安全/隐私保护 Swift iOS开发
如何用 Xcode 安装 ipa
如何用 Xcode 安装 ipa
|
安全 IDE Linux
如何用Xcode安装ipa
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store! 下面进行步骤介绍! 利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。 非常的方便,没有Mac也可以用Appuploader在Windows电脑上传ipa到App Store Connect后台。
如何用Xcode安装ipa
|
Linux C++ iOS开发
[✔️]将tiledmap项目转换为visual studio项目,方便开发
[✔️]将tiledmap项目转换为visual studio项目,方便开发
108 0
|
编译器 开发工具 C语言
iOS 语言基础&初探 Xcode 工具
iOS 语言基础&初探 Xcode 工具
218 0
iOS 语言基础&初探 Xcode 工具
|
iOS开发 MacOS
XCode应该是从11.4开始支持Sandbox
XCode应该是从11.4开始支持Sandbox
133 0
好工具推荐系列:Qt/CMake工程类型转换工具
好工具推荐系列:Qt/CMake工程类型转换工具
761 0