前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XCode最佳实践之最佳数据类型

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

作者头像
大石头
发布2018-01-09 16:33:53
1.1K0
发布2018-01-09 16:33:53
举报
文章被收录于专栏:智能大石头

与其它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%日常工作,什么特别的情况,自己想办法!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档