跳转到内容

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 错误方面具有最小的可能性。如果列变成了棕色,您需要重命名该列,然后将其改回以使其“变回白色”。

华夏公益教科书