Deleting with the Adaptor Level
Description
The adaptor level is a server-independent interface for working with the relational database consisting of an EOAdaptor, an EOAdaptorContext and an EOAdaptorChannel. In this level, the database rows are represented as instances of NSDictionary.
The EOAdaptor manages the EOModel, a model that maps the tables and relationships in the database to EOF objects. The EOAdaptor is also responsible for instantiating the correct subclass for the database specific adaptor layer. The EOAdaptorContext manages the database transactions. The EOAdaptorChannel does all the inserts, updates, and deletes, as well as executing SQL. Before you send any SQL to the database, you need to:
· Create an EOAdaptor for the database.
· Create an EOAdaptorContext from the EOAdaptor.
To update the database at the adaptor level, you need to specify an EOQualifier which specifies the row to delete. The following code uses the adaptor level to delete a row from the database.
Figure 1. Objective-C Code
- (void) rawDelete:(EOEditingContext *)ec forModelNamed:(NSString *)
modelName forEntityNamed:(NSString *)entityName withQualifierString:
(NSString *)qualString
{
EOModel *myModel;
EOEntity *myEntity;
EOQualifier *myQualifier;
EOAdaptor *myAdaptor;
EOAdaptorContext *myAdaptorContext;
EOAdaptorChannel *myAdaptorChannel;
// get the model, entity, and qualifier describing row to update
myModel = [[ec modelGroup] modelNamed:modelName];
myEntity = [ec entityNamed:entityName];
myQualifier = [EOQualifier qualifierWithQualifierFormat:qualString];
// get the adaptor, adaptor context, and adaptor channel
myAdaptor = [EOAdaptor adaptorWithModel:myModel];
myAdaptorContext = [myAdaptor createAdaptorContext];
myAdaptorChannel = [myAdaptorContext createAdaptorChannel];
// delete the row from the database
[myAdaptorChannel openChannel];
[myAdaptorChannel deleteRowDescribedByQualifier:myQualifier
entity:myEntity];
[myAdaptorChannel closeChannel];
}