Jigsaw I neglected to point out that the code I posted for this previously was created in VS 2005 running on XP Professional. I'm going to update the code here and do a quick walkthrough of the steps necessary to get this working in Visual Studio 2008 running on Vista. You can find the download links at the end of this article.

Although I don't recommend moving projects from one version of VS to another willy-nilly (it takes very little time to get it up and running from scratch), if you are having problems moving a project between VS versions, you might want to check the version number at the top of the solution file; for VS 2005 you would find something like Version 9.00. When moving a VS 2005 project to VS 2008, you might try changing the 9 to a 10.

I plan on following up some more on this Guest Book application and showing how to develop an administrative back end for it. Right now ,the moderator functionality is built in, in that the 'live' field is not set by default. So, if you want your comment to appear, you will have to change this field value to 'true' manually in the database. The Guestbook table design is shown below.

Guestbook Table


The App_Code folder refused to play nice in the VS 2008 Web project, so I renamed the folder "Layers". Other than that, the code is the same. I've only been using Vista for a few weeks so I'll defer judgement until after the full SP1 release. For developers, I would recommend turning off the User Account Control (UAC) to get rid of those demented pop-ups. This is still a version 2.0 application, so be sure to select this option if creating your project from scratch in VS. Sometimes I will build my own project incrementally as I study other people's code that I have downloaded, just as a learning exercise :-)

VS 2008 Solution Explorer


One of the first things you will notice when moving to this environment is the completely new IIS 7 interface. It's 100% different and I'm finding it a joy to work with. In order to get the application running, you will first have to check some IIS 7 settings. ASP.NET is more integrated than ever before with IIS; no more dependency on command line line utilities like aspnet_regiis.exe – so do not run it to install ASP.NET!

IIS 7 Settings


In IIS, select the Application Pools node and set the Managed Pipeline for the DefaultAppPool to “Classic” in the Application Pools view. You will also need to create a virtual directory. You can do this (or pretty much anything else) from within the new IIS console, but I still prefer to perform this task from within the IDE. Right-click on the project node in solution explorer and select properties. On the Web tab of the properties manager, opt to create a virtual directory. Now, right-click on Default Web Site node in IIS 7 and opt to add a virtual directory. Navigate to the Guestbook folder and select it. Also, don't forget to set Default.aspx as the default page in IIS. In your browser, navigate to http://localhost/guestbook to bring up the home page.

VS 2008 Project Settings


If you start getting security errors, try adding appropriate permissions to the folder in question. If you get the following error:

HTTP 401.2 - Unauthorized: Logon failed due to server configuration
Internet Information Services

...in IIS 7, navigate to and highlight the Guestbook node. In the Category view to the right, double-click on the Authentication icon under Security. Right-click the Windows Authentication entry and opt to enable Windows Authentication. (KB 253667)

The database is very simple; one table and two stored procedures. Create the Guestbook database manually in SQL Server Management Studio (SSMS) and run the three scripts in your query window. Set up your permissions as shown below and you should be good to go.

Database Permissions


GuestBook-VS2005.zip (74.70 kb)

Guest_Book_DB.zip (3.13 kb)


End of the Impedance Mismatch?

by agrace 10. July 2007 16:37

On a practical level, yes. And with a rack of new technologies in the offing from Microsoft, we are sure to have a far more enjoyable programming experience in the near future than we have had up to now.

For almost three decades, object-oriented programmers have had to deal with the impedance mismatch issue. In essence, the programs we use to access our databases are object-oriented while the databases themselves are relational. There is not a direct mapping between them. And while much of it is fairly obscured through the use of the ADO.NET API, it would be fair to say that the two models are as similar as chalk and cheese.

In middle to large-sized projects, we typically use entity objects as object-oriented views of our relational data. The biggest problem has always been establishing the mapping between the two. This often entailed the use of third party tools such as NHibernate. An alternative approach was object-relational databases which I never did like.

Enter the Magic Triumvirate of LINQ, Orcas and the Entity Framework! This set of technologies promises to eliminate the impedance mismatch between the various data models and programming languages. With LINQ, we now have rich queries built right into the language and can access the data source whether it's XML, relational or objects. Orcas, the latest version of Visual Studio is currently available for download as a CTP release. The best bet may be to install the virtual PC version. I'm planning on doing this myself this weekend as I really want to get the feel of the new LINQ syntax. The only sour note in all of this is that the final version of Entity Framework won't be available until after the Orcas release. In the meantime, you can download the new CTP version of the Entity Framework.

Here's a simple LINQ query taken from 101 LINQ Samples:

public void Linq()
  List products = GetProductList();
  var productNames = from p in products
    select p.ProductName;
  Console.WriteLine("Product Names:");
  foreach (var productName in productNames)