Hotel mixin sample -- repositories

The common base-class for all repositories is implemented in the sub-project Hotel.Repository. It is a simple generic type with the type of the aggregated instances as type parameter. The generic interface IRepository<T> exposes three methods:

- T Add (T elem);
- T Remove (T elem);
- IQueryable<T> Find ();

Add and Remove return the same instance as was passed as a parameter. This is not very useful in most cases, but can make code more compact in other cases.

Find without any parameters returns all instances in the repository as an IQueryable<T>, which can be queried with Linq. This method is used a lot in the Mixin Hotel app.

A more elaborate discussion (plus some hand-waving) can be found in this digression: Repositories -- sample vs. production.