與其它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%日常工作,什麼特別的情況,自己想辦法!
我不相信神話,我只相信汗水!我不相信命運,我只相信雙手!
分類:
x元件,
xcode
Dockerfile之最佳實踐
docker 是乙個開源,輕量級的應用容器引擎,基於 golang 語言開發,用於建立 管理和編排容器。與 vmware 虛擬機器相比,docker 使用容器承載應用程式,而不使用作業系統,所以它的開銷很少,效能很高。但是 docker 對應用程式的隔離不如虛擬機器徹底,所以它並不能完全取代 vmw...
最佳實踐 Flutter 最佳實踐
最佳實踐是乙個領域可以接受的專業標準,對於任何程式語言來說,提高 質量 可讀性 可維護性和健壯性都非常重要。讓我們探索一些設計和開發flutter應用程式的最佳實踐。class enum typedef和extension應採用駝峰命名uppercamelcase規則。class mainscree...
JUnit最佳實踐
junit最佳實踐 cherami 轉貼 參與分 20053,專家分 4960 發表 2003 9 16 下午7 57 版本 1.0 閱讀 3899次 martin fowler說過 當你試圖列印輸出一些資訊或除錯乙個表示式時,寫一些測試 來替代那些傳統的方法。一開始,你會發現你總是要建立一些新的f...