I've based my backend app on some of the code I've found in your solution, and I wanted to share a couple of improvements that Dave Shaw and gsomix on the F# Slack helped me with. I liked what you were doing with PrintfFormat in the UrlPaths module, but I didn't like that I couldn't use it with sprintf to remove the path duplication in the Url module. The following code fixes that.
moduleUrlPaths =// The type aliases are both more readable, but also allows the format to work with both// routef and sprintftypeStringPath= PrintfFormat<string -> string, unit, string, string, string>typeStringPath2= PrintfFormat<string -> string -> string, unit, string, string, string * string>let ``/api/foo`` ="/api/mil-to-mil/cost-categories"let ``/api/foo/%s`` :StringPath ="/api/mil-to-mil/cost-categories/%s"moduleUrl =letcreate(baseUrl :string)(route :string)=
route.TrimStart [|'/'|]|> sprintf "%s/%s" baseUrl
let ``/api/foo/%s`` baseUrl fooId = create baseUrl (sprintf UrlPaths.``/api/foo/%s`` fooId)
Another question:
I created a new ASP.NET MVC5 project with VS2015, and its folder structure is much different with yours. Where is connectionStrings setting in your project?