Welcome to the thunderdome
Hello and welcome! This is a sample application (.NET 4.0) I wrote for a continuous integration demo. I chose to write it this way because
- I wanted a real-feeling CRUD application. No more string calculators or for that matter,
new CalculatorRepositoryGatewayServiceMutex().Add(2,2, async await)samples. We've all seen the CalculatorRepositoryGatewayServiceMutex demo a thousand times.
- I wanted to be able to fully explain its behavior in 3 minutes.
- I wanted something with realistic, working NUnit tests (note: they're not unit tests, they hit the database).
- I wanted a database so I could do database migrations.
- I wanted to use as few abstractions as possible so as to not distract from the meat of the talk.
The rest of the demo took place in TeamCity, so unfortunately for you, none of the interestingness of the demo is visible here.
What may interest you, fellow sojourner, may include:
- my use of SQLite in an ASP.NET web application in such a way that it works in both Cassini and IIS (tested, believe it)
- my use of Dapper in conjunction with SQLite,
What may interest you--well, let me be honest--what may appall you about this application is:
- My "MVC best practices", which include calls to the ASP.NET Response object to
Response.End(), and magic strings as often as possible
- My "DotNetNuke" module
- My failure to either a) use the blank template and build the teeny little bit I needed from scratch, b) remove the 98% of the standard template I didn't need.
- My lack of abstractions or for that matter, methods.
- My environment-specific deployment scripts that cheat and just copy files to a hardcoded path on your C:. So, ... you may not want to use them.
- I further regret to announce that I didn't get database migrations up and working in time for the presentation, so, you'll have to accept my excuse because accept it or not, I don't have database migrations. A travesty, I agree.