What has gone before-I had problems installing blog software with my host, so I decided to write my own. I sort of force myself to do ASP.Net MVC instead of ASP.Net Web Forms, and was pleasantly surprised at how much I liked it.
Ok, so I'm writing my own blog software using MVC. Sounds good, first lets get a schema going..Ok, blog entry table, a table for tags, a table or comments, throw in a users table, what else? How about a role table for user roles. Hmm I guess that's all I techincally need. Its not much really when you get down to it. Pfft you know what. I want to learn more about the ins and outs of MVC and LINQ. Honestly I don't think five tables are going to really push the envelope there now is it? Tell you what. Lets make this blogging software that can support mutliple blogs, that's a bit more interesting.
Was it neccessary? No, would I just willingly add complexity in my daily job? Most definitely not. I prefer to keep it simple. But honestly would a five table solution really present problems all that interesting? No, so what the heck, in the interest of learning I'll take the leap.
So lets see I need a few more tables. How about one to represent unique blogs, one to associate Users with Blogs, sprinkle a few Blog Id's via some Foreign Keys. Ok. I have my schema. (Hmm maybe not, the file uploaded, but I can't see it for some reason, some sort of MVC thing perhaps?)

If you look at it (I know in this format its shrunken and you can't read it, open it up if you're interested) I'm sure there are a few things you're curious about (like what the heck is "subfolder" on the Blog table? And why does EntryComment have a BlogId in it, can't it be normalized to just have EntryId, and get the BlogId from that relationship?). I'll be going into the why's on a bunch of these tables as I describe some of my implementation decisions.
Ok, now how do I hook up LINQ? Create a new LINQ to SQL object. No problem. Then drag the tables from the server explorer to the design surface. Ok, wow, that's it?&nb sp; Hmm maybe I should have done ADO.Net Entity Data Model, or NHibernate instead. Was this worth my time learning? Well I'm far from done I thought. So lets stick with LINQ for now, but maybe I can write it so I can switch out my data layer for something else if I want to try something else later.
So now I reach my next decision point. What's the best way to build upon all of the LINQ generated code?