與其它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%日常工作,什麼特别的情況,自己想辦法!我不相信神話,我隻相信汗水!我不相信命運,我隻相信雙手!