Question: I am trying to build an ORM around GlideRecords. GlideRecords have a format similar to 

```
var inc = new GlideRecord('incident');
inc.addQuery("foo", "1");
inc.addQuery("bar", "1");
inc.query();

```

The orm is intended to look like this:
`var inc = new ORM().foo("1").bar("1").query();`

My immediate decision was to implement the ORM using `builder pattern` but then realized that I also had to support `update` operations.
ie 

`inc.foo("2").update()`

Now update needs me to use `setters`

So Help me chose from following options:

1. Use only setters
2. Use builders and setters.

Answer: 
Attribute routing is a bit trickier in ASP.NET MVC than traditional convention based. You can start review from `System.Web.Mvc.Controller.ExecuteCore()` where `GetActionName()` returns null for attribute routing and let action selector choose which action to execute. Then you can jump to `System.Web.Mvc.ControllerActionInvoker.FindAction()` that does all magic and finds RouteCandidates then filters them by ActionNameSelectors, ActionSelectors etc. 

I've made [a pull request](https://github.com/AnthonySteele/MvcRouteTester/pull/40) with implementation that wraps ASP.NET MVC logic.

One important thing to add:
The implementation is quite heavy with a lot of reflection. Please take a look at how the ASP.NET team tests routing [e.g. in AttributeRoutingTest.cs](http://aspnetwebstack.codeplex.com/SourceControl/latest#test/System.Web.Mvc.Test/Routing/AttributeRoutingTest.cs). You can use you own ControllerFactory that will return mocked controller with actions returning their names, parameters, etc. This would be much easier in my opinion.
@Anthony, if you only want to see which routes are followed with any given URL, then load the [Cobisi Routing Assistant](http://cobisi.com/routing-assistant) extension.

In the Visual Studio IDE, go to Tools->Extension Manager.... Then, make sure you have the Online Gallery tab selected and type "cobisi" in the search box. Once you have installed the extension, you will get a new item in the Tools menu called Cobisi (natch).

Choose the URL Mapper, unlock the project if it complains about it being locked, and then enter a URL. When you click on the Map button, you will see how the URL is routed. Super awesome if you are stuck with routing issues, IMHO.