The first time you run the app it will attempt to build the database in the server taken from the connectionstring in the app.config file.
I've selected a generic product tagging mechanism for filtering the data because the two examples given are quite disparate (pg13 and vegetarian). On top of this I am running LINQ to SQL because the deferred execution will allow me to build up a specification of what I want and then "compile" it all into one Transact-SQL statement at the end. The actual filtering process happens in a
Pipeline of Filters (although I think I may be leaning more towards a
Specification implementation next if I can figure it out.
Lastly, I have implemented Pagination as a separate concern because I believe that it is a separate concern. Pagination belongs in the UI along with Ordering. Filtering belongs in the Business Logic Layer and the Data Access Layer should just do the CRUD.
I've started to build a fluent interface on top of everything too. This is the first time I've ever done one so it was interesting (harder than I'd thought).
There is more detail in the
Blog Post