Refactor the domain model.

Alter structure of the domain model to include Services and Data, each with their own Abstract and Concrete sections.  This allows for a "pure" data access layer (Data) for repositories, and introduces "Services" for business rules (such as calculating the next free Sku number when adding an Eyeglass).  This adds complexity but better attains separation of concerns.

The relationship now generally goes Controller -> Service -> Repository.

The structure of this domain model should satisfy the requirements of the entire project from this point onward.