Inherits from: NSObject
Conforms to: NSObject
Declared in: EOAccess/EOModel.h
An EOModel represents a mapping between a database schema and a set of classes based on the entity-relationship model. The model contains a number of EOEntity objects representing the entities (tables) of the database schema. Each EOEntity object has a number of EOAttribute and EORelationship objects representing the properties (columns or fields) of the entity in the database schema. For more information on attributes and relationships, see their respective class specifications.
An EOModel maintains a mapping between each of its EOEntity objects and a corresponding enterprise object class for use with the database level of the Enterprise Objects Framework. You can determine the EOEntity for a particular enterprise object with the entityForObject: method.
An EOModel is specific to a particular database server, and stores information needed to connect to that server. This includes the name of an adaptor framework to load so that the Enterprise Objects Framework can communicate with the database. Models are stored in the file system in a manner similar to adaptor framework. EOModel objects are usually loaded from model files built with the EOModeler application rather than built programmatically. If you need to programmatically load a model file, see the section "Loading a Model File" .
Models can have relationships that reference other models in the same model group. The other models may map to different databases and types of servers.
Models are organized into model groups; see the EOModelGroup class specification for more information.
Creating an EOModel Programmatically
The EOAdaptorChannel class declares methods for reading basic schema information from a relational database. You can use this information to build up an EOModel programmatically, and then enhance that model by defining extra relationships, flattening attributes, and so on. See the class description in the EOAdaptorChannel class specification for information on reading basic schema information, and see the other modeling classes' specifications for information on creating additional attributes and relationships.
In EOModel.h, EOModelEOAccess defines an NSString constant for the name of the notification it posts. For more information, see "Notifications" .
- Initializing an EOModel instance
- - initWithContentsOfFile:
- - initWithTableOfContentsPropertyList:path:
- Saving a model
- - encodeTableOfContentsIntoPropertyList:
- - writeToFile:
- Loading a model's objects
- - loadAllModelObjects
- Working with entities
- - addEntity:
- - removeEntity:
- - removeEntityAndReferences:
- - entityNames
- - entityNamed:
- - entities
- - entitiesWithSharedObjects
- Naming a model's components
- - beautifyNames
- Accessing the model's name
- - setName:
- - name
- - path
- Checking references
- - referencesToProperty:
- - externalModelsReferenced
- Getting an object's entity
- - entityForObject:
- Accessing the adaptor bundle
- - adaptorName
- - setAdaptorName:
- Accessing the connection dictionary
- - setConnectionDictionary:
- - connectionDictionary
- Accessing the user dictionary
- - setUserInfo:
- - userInfo
- Working with stored procedures
- - addStoredProcedure:
- - removeStoredProcedure:
- - storedProcedureNames
- - storedProcedureNamed:
- - storedProcedures
- Accessing the model's group
- - setModelGroup:
- - modelGroup
- Accessing prototype attributes
- - availablePrototypeAttributeNames
- - prototypeAttributeNamed:
Returns the name of the adaptor for the receiver.
This name can be used with EOAdaptor's adaptorWithName: class method to
create an adaptor.
- (NSString *)adaptorName
Adds anEntity to
the receiver. Raises an
NSInvalidArgumentExceptionif an error occurs (for example, if anEntity doesn't exist, if the entity belongs to another model, or if an entity of the same name is already in the receiver).
See Also: - entities, - removeEntity:, - removeEntityAndReferences:
Adds storedProcedure to
the receiver. Raises an
NSInvalidArgumentExceptionif an error occurs (for example, if a stored procedure of the same name is already in the receiver).
See Also: - removeStoredProcedure:, - storedProcedures, - storedProcedureNamed:, - storedProcedureNames
Returns a list of available prototype names.
- (NSArray *)availablePrototypeAttributeNames
See Also: - prototypeAttributeNamed:
Makes all of the receiver's named components
conform to a standard convention. Names that conform to this style
are all lower-case except for the initial letter of each embedded
word other than the first, which is upper case. Thus, "NAME"
becomes "name", and "FIRST_NAME" becomes "firstName".
See Also: + externalNameForInternalName:separatorString:useAllCaps: (NSString Additions), - beautifyName ( EOEntity, EOAttribute, EORelationship, EOStoredProcedure), - name
Returns a dictionary containing information
used to connect to the database server. The connection dictionary
is the place to specify default login information for applications
using the model. See the EOAdaptor class specification for more
- (NSDictionary *)connectionDictionary
Encodes the receiver into propertyList.
This method is used to get an ASCII representation of an EOModel
in property list format.
See Also: - initWithTableOfContentsPropertyList:path:
Returns an array containing the receiver's
entities. Note that this method loads every entity, and thus defeats
the benefits of incremental model loading.
- (NSArray *)entities
See Also: - entityNames
array of entities that have objects to load into a shared editing
- (NSArray *)entitiesWithSharedObjects
Returns the entity associated with anEO,
whether anEO is an instance of an
enterprise object class, an instance of EOGenericRecord, or a fault (see
the EOFault class specification for information on faults). Returns nil if anEO has
no associated entity.
- (EOEntity *)entityForObject:(id)anEO
Returns the entity named name,
or nil if no such entity exists. Posts an EOEntityLoadedNotification when the
entity is loaded.
- (EOEntity *)entityNamed:(NSString
See Also: - entityNames, - entities
Returns an array containing the names of the
- (NSArray *)entityNames
See Also: - entities, - entityNamed:
Returns an array containing those models that
are referenced by this model.
- (NSArray *)externalModelsReferenced
See Also: - referencesToProperty:
Initializes a newly-allocated EOModel by reading
the contents of the file named path as
a model archive. The file specified by path can either be an old-style
(.eomodel) or new-style (.eomodeld)
model file. Sets the EOModel's name and path. initWithContentsOfFile: raises
NSInvalidArgumentExceptionif for any reason it cannot initialize the model from the file specified by path.
See Also: - name, - path
Uses tableOfContents (which
is the property list representation of an EOModel) with the file
name path to initialize the receiver.
See Also: - encodeTableOfContentsIntoPropertyList:
Loads any of the receiver's entities, stored
procedures, attributes, and relationships that have not yet been
See Also: - attributes (EOEntity), - entities, - relationships (EOEntity), - storedProcedures
Returns the model group of which the receiver
is a part.
- (EOModelGroup *)modelGroup
See Also: - setModelGroup:
Returns the receiver's name.
- (NSString *)name
See Also: - path, - initWithTableOfContentsPropertyList:path:
Returns the name of the EOModel file used to
create the receiver, or nil if the model wasn't initialized from
- (NSString *)path
See Also: - name - initWithContentsOfFile:
Returns the prototype attribute for the given attributeName.
It first looks for the prototype in an entity named EOadaptorNamePrototypes
(which can be in any model in the receiver's model group). If
the prototype isn't found there or if the EOadaptorNamePrototypes
entity doesn't exist, it then looks in an entity named EOPrototypes
(in any model in the model group). If the search is still unsuccessful,
this method finally looks for the prototype in the list of prototypes
provided by the adaptor itself.
- (EOAttribute *)prototypeAttributeNamed:(NSString
See Also: - availablePrototypeAttributeNames
Returns an array of all properties in the receiver
that reference aProperty, whether
derived attributes, relationships that reference aProperty,
and so on. Returns nil if aProperty isn't
referenced by any of the properties in the model.
- (NSArray *)referencesToProperty:(id)aProperty
See Also: - externalModelsReferenced
Removes the entity with the given name without
performing any referential integrity checking.
See Also: - addEntity:, - removeEntityAndReferences:
Removes entity and
any attributes or relationships in other entities that reference entity.
See Also: - removeEntity:, - addEntity:
Removes storedProcedure without
checking to see if an entity uses it.
See Also: - addStoredProcedure:, - storedProcedures
Sets the name of the receiver's adaptor to adaptorName.
See Also: + availableAdaptorNames (EOAdaptor)
Sets the dictionary containing information used
to connect to the database to connectionDictionary.
See the EOAdaptor class specification for
more information on working with connection dictionaries.
See Also: adaptorWithModel: (EOAdaptor)
Sets the model group of which the receiver should
be a part. Note that you shouldn't change an EOModel's model
group after it has been bound to other models in its group.
See Also: - modelGroup
Sets the name of the receiver to name.
Sets the dictionary of
auxiliary data, which your application can use for whatever it needs. dictionary can
only contain property list data types-that is, NSString, NSDictionary,
NSArray, and NSData.
Returns the stored procedure named name,
or nil if the model doesn't contain a stored procedure with the
- (EOStoredProcedure *)storedProcedureNamed:(NSString
See Also: - storedProcedureNames, - storedProcedures
Returns an array containing the names of all
of the model's stored procedures.
- (NSArray *)storedProcedureNames
See Also: - storedProcedureNamed:, - storedProcedures
Returns an array containing all of the model's
stored procedures. Note that this method loads each of the model's
stored procedures, thus defeating the benefits of incremental model
- (NSArray *)storedProcedures
See Also: - storedProcedureNames, - storedProcedureNamed:
Returns a dictionary of user data. You can use
this to store any auxiliary information it needs.
- (NSDictionary *)userInfo
See Also: - setUserInfo:
Saves the receiver in the directory specified
by path. If the file specified by
path already exists, a backup copy is first created (using path
with a "~" character appended). As a side-effect, this method
resets the current path.
any error which prevents the file from being written.
See Also: - path
EOModel declares and posts the following notification.
EOEntityLoadedNotificationPosted after an EOEntity is loaded into memory. The notification contains:
|Notification Object||The entity that was loaded.|