Unidirectional relation

For unidirectional relations no annotations at all are necessary for re motion to automate the mapping to the database in a meaningful way. re-motion simply takes a .NET declaration in the Person class like

Location Location { get; set; }

to mean "there is a unidirectional relationship between Person and Location", and there will be a foreign key in the Person table to its Location row in the Location table. Things are not as easy for bidirectional relationships, as we will see shortly.

If domain objects were not persisted in database tables we'd have difficulty finding all Person objects belonging to a given Location, because the .NET Location object can't be asked for it. Since domain objects are always persisted in a database, however, we can query the Person table for a given location and wrap up the query in a member function for the Location class. For bidirectional relations, re-motion generates such queries for keeping the .NET properties in sync with the database for you, and makes sure they work correctly at both ends of the relation. A unidirectional
relation, however, lacks this automation in the other direction, in this case the query for getting the persons belonging to a location.