跳轉到內容

WebObjects/EOF/Modeling/Prototypes

來自 Wikibooks,開放的書籍,開放的世界
(從 Programming:WebObjects/EOF/Modeling/Prototypes 重定向)

原型是 EOF 的機制,用於資料庫無關的建模。透過包含一個 EOModel,該模型有一個名為“EOJDBCDatabaseVendorPrototypes”的特殊實體(如 EOJDBCFrontBasePrototypes 或 EOJDBCOraclePrototypes),或者回退到通用原型“EOJDBCPrototypes”,您可以定義可重用的型別定義。例如,您可以宣告一個型別定義“money”,它對映到一個具有 32 位精度和 2 位小數的浮點數,但不同的資料庫對此有不同的名稱和語法。使用原型,您的模型只需參考其原型“money”來獲取其型別,原型定義其餘部分,並且可以根據您使用的資料庫進行切換。

因為原型集中了您的型別資訊,所以它也使批次更改型別變得更加容易。例如,如果您將“address”型別宣告為 varchar(50),然後意識到這不夠,您只需將原型更改為 varchar(100),所有型別都將繼承此更改。

Chuck Hill

[編輯 | 編輯原始碼]

沒有原型的模型,嗯,很笨。沒有原型的可重用框架不可重用。請參閱 Practical WebObjects 第 45-55 頁,瞭解對此內容的討論和程式碼。EOModeler 文件中有一些非常膚淺的討論。

Anjo Krank

[編輯 | 編輯原始碼]

[Project Wonder 擁有] 精美的程式碼,允許您根據屬性進行切換,而不是使用通常使用的胡言亂語。我們還允許您實際支援多種型別的資料庫,這在 EOJDBCPrototypes 中是不可能的。但是,我建議只有在您只有一個模型或非常自律的情況下才使用原型。

注意事項

[編輯 | 編輯原始碼]

EOModeler 並非沒有缺陷。特別是,它對原型相當挑剔。然而,這些小小的痛苦是值得的。

框架?什麼框架。

[編輯 | 編輯原始碼]

EOModeler 必須在您從其開啟模型的路徑中有一個 .pbproj 或 .xcode 構建資料夾,否則它將無法載入其他框架(尤其是原型框架)。

死亡的棕色列

[編輯 | 編輯原始碼]

如果您更改了先前定義的列的原型,您可能會注意到 EOModel 中的列名變成了棕色。模型中所有呈棕色的列都將由原型定義,但您可能已經注意到,通常不會在原型中定義列名。因此,當您儲存模型時,它將清空您的列名。

如果一個列確實被清空,則會導致 EOF 內部出現非常煩人和無用的錯誤訊息。我相信您會從 SQL 生成中得到一個 ClassCastException,來自一個方法,該方法的名稱是關於從 NSArray 建立逗號分隔列表的 (我沒有現成的異常)。所以,如果您在 EOF 中的深處看到一個 ClassCastException,請記下這個資訊,因為它將節省您除錯它的很多痛苦。

最好始終先選擇原型,然後再填寫列的其餘部分。與一小部分行為變化相比,它在避免惱人的 EOModeler 錯誤方面具有最小的可能性。如果列變成了棕色,您需要重新命名該列,然後將其改回以使其“變回白色”。

華夏公益教科書