天天看點

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