與其它ORM框架相比,XCode擁有最強的多數據庫正向反向工程,暫時還沒有發(fā)現能在這點上超于XCode的,哈哈!
但是,XCode的多數據庫反向工程,也是有代價的,不同數據庫的數據類型相差十萬八千里,我們不可能完全支持。
所以,我們只做了常見的一些數據類型支持,但是這些已經足以滿足99%的要求。
最佳數據類型如下:
1,整型。Int32是標準配置,這個必須有的。在Oracle,整型就是小數為0的Numeric
2,長整型。Int64,大部分數據庫都有吧。
3,短整型。Int16,這個要小心了,似乎有些數據庫不支持,不支持時XCode會自動選Int32,兄弟就不要省這點存儲空間啦。
4,布爾型。Boolean,大部分數據庫支持,MySql不支持,它一般用一個枚舉Y/N來實現,XCode有支持。
5,浮點數。單精度Fload雙精度Double,建議一律用Double,否則不同數據庫很難統(tǒng)一,還有千萬小心精度設置和小數位數,XCode反向工程可能不能把精度和小數位數完美的遷移到其它類型數據庫,同類型沒有問題。
6,貨幣。Decimal,貨幣類型必須有的,對應MSSQL的Money。開發(fā)的時候小心,不要拿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和“”有不同的業(yè)務意義,各種類型的默認值代表無效數據。
1,除了字符串長度外,其它類型絕對絕對,盡可能的不要設置其它屬性,包括長度、精度、小數位數,否則XCode不能實現完美遷移
2,XCode目前不支持各種數據庫的外鍵。新增的表間關系是通過猜測得到的,規(guī)則:字段名等于另一個表名加主鍵名時,認為是外鍵
3,不要用Guid類型和二進制類型,XCode只能支持正向工程,不能支持它們的反向工程?捎胣varchar(32)替代Guid
4,字符串盡量不要用varchar/char等,因為不同數據庫甚至相同數據庫的不同版本,差別好大。這樣省不了多少空間。
5,盡可能的不要用默認值。目前只有當前時間默認值支持好一點,newid()也有簡單的支持,這塊太痛苦了,也許將來不支持了。
XCode內部沒有類型映射表,別亂猜測。!
ADO.Net的架構里面有一個DataTypes的模式,XCode利用的正是它,所以,什么字段類型對應什么.Net類型,是各種數據庫驅動自身說了算,不是XCode說了算,所以我們也不知道所有類型是否支持。
反正這么多年,我們占用這些類型,就已經足夠了。