<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://aspadvice.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>AspAdvice</title><link>http://aspadvice.com/blogs/default.aspx</link><description>Find Answers to Questions about Active Server Pages, ASP.NET, and related technologies.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>Filling in the Gaps - Problem Design Solution 3.5 - Part 1</title><link>http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx</link><pubDate>Fri, 19 Mar 2010 19:26:42 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:61585</guid><dc:creator>Yougotiger</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MyHeadings"&gt;Prologue&lt;/p&gt;  &lt;p&gt;**Author's Note - I waited until I had both parts of this post put together before posting, which gave me some time to read a little in some of the other chapters. Things seem to have improved in readability some in them. I want to emphasize again that I'm not here to bash the book, rather to provide some of the missing information.&lt;/p&gt;  &lt;p&gt;About the time I started this blog, I purchased an AWESOME programming book - &lt;a href="http://www.amazon.com/s/ref=nb_ss_0_12?url=search-alias%3Daps&amp;amp;field-keywords=asp.net+2.0+website+programming+problem+-+design+-+solution&amp;amp;sprefix=asp.net+2.0+" target="_blank"&gt;ASP.Net 2.0 Website Programming: Problem - Design - Solution&lt;/a&gt;. A very highly praised book, and for good reason, it's fantastic! (in fact, do you see a resemblance between my blog sections and the the book's title?) Recently a newer &lt;a href="http://www.amazon.com/ASP-NET-3-5-Website-Programming-Programmer/dp/0470187581/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1262906674&amp;amp;sr=8-3" target="_blank"&gt;ASP.Net 3.5 edition&lt;/a&gt; was announced, and I practically pre-ordered it (which I've never done with any book before) with the anticipation that it would be as good as the previous edition. Quite frankly, having read the first 3 chapters, I am pretty disappointed. Specifically, I've found that rather than being strictly Problem Design Solution, it's kind of Problem, Design/Solution, not quite enough Solution. The code for the solution has been kind of hard to follow since it is SO mixed into the explanation given in the design section. Also I've had a hard time figuring out where the author intends to put code (i.e. what files and in what folders). I have found that &lt;a href="http://p2p.wrox.com/book-asp-net-3-5-website-programming-problem-design-solution-526/" target="_blank"&gt;I'm not the only one&lt;/a&gt; with this problem, so something's not quite right. In the interest of fairness, I still haven't made it past chapter 3 so maybe it gets better in chapter 4 or 5, however I'd like to get this working before I move on to subsequent chapters.&lt;/p&gt;  &lt;p&gt;I think that like many others in the &lt;a href="http://p2p.wrox.com/book-asp-net-3-5-website-programming-problem-design-solution-526/" target="_blank"&gt;book's official forum&lt;/a&gt;, I was expecting (like in the previous version) to walk trough the book and create a working website. The author made it clear in the forums that this isn't the case, &lt;a href="http://p2p.wrox.com/book-asp-net-3-5-website-programming-problem-design-solution/77355-solution-section-confusing-sometimes.html#post250826" target="_blank"&gt;&amp;quot;the book is not intended to be a follow along and create the site step by step book. There's not enough room...&amp;quot;&lt;/a&gt; Personally I disagree. I feel the book could have done exactly that while remaining a reasonable length. Also I would have liked to see the project code download have a project for each chapter (where each chapter's project takes all the code from previous chapters and builds from there), so that we can watch the progression of the code as we go through the book.&lt;/p&gt;  &lt;p&gt;Having said that, I'm not here specifically to bash the newer version of the book, rather I thought I'd fill in some of the gaps and document how to do some of the things I felt were missing or poorly described. I hope to fill in some of the gaps - like what file to put xyz code in, and in what folder/solution to put that code file in. I expect that I may do a couple of posts related to this topic (in fact this chapter. (*Note: Since I'm already past chapter 2, so I don't expect that I'll go back and fill in any holes there...))&lt;/p&gt;  &lt;p class="MyHeadings"&gt;Problem&lt;/p&gt;  &lt;p&gt;When I finished reading chapter 3, I found that using the code in the Solution section I had some major holes in my solution. Specifically, I found the following that I will address in this post (others will follow). I needed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A table definition for the SiteMap data (what are the data types?). &lt;/li&gt;    &lt;li&gt;To generate an Entity Model for the SiteMap data. &lt;/li&gt;    &lt;li&gt;A Base Repository class. &lt;/li&gt;    &lt;li&gt;Some code for our Helpers class module. &lt;/li&gt;    &lt;li&gt;A SiteMap repository class. &lt;/li&gt;    &lt;li&gt;An IBaseEntity interface. &lt;/li&gt;    &lt;li&gt;A partial class extending our SiteMapInfo object generated by out Entity Model wizard. &lt;/li&gt;    &lt;li&gt;A partial class extending our SiteMapEntity generated by our Entity Model wizard. &lt;/li&gt;    &lt;li&gt;A BeerHouseDataException class. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hopefully I'll be able to provide a little of this for you so that you don't have to go around figuring out stuff only by looking through the source code files like I have.&lt;/p&gt;  &lt;p class="MyHeadings"&gt;Solution&lt;/p&gt;  &lt;p&gt;Let's start at the top and work down (or at the beginning and work backwards?)&lt;/p&gt;  &lt;p class="MySubHeadings"&gt;A table Definition for the SiteMap Data&lt;/p&gt;  &lt;p&gt;One of the first things that sticks out is that there isn't really a definition of the SiteMap table in the database. There was mention in the forums that there are pictures of the SiteMap table in the book on pages 80 and 125, but this is lacking in some detail as it doesn't provide datatypes, just the column names. I found that the database files were included in a separate download and that they are SQL Server 2008 version (meaning they can't be run with SQL Server 2005). SO if you want to access the files yourself, you can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download and install SQL Server 2008 Express. &lt;/li&gt;    &lt;li&gt;Download and install SQL Server Management Studio Express 2008, you can't connect using the 2005 version (which is much harder than it sounds - and MUCH harder than it ought to be - just read the community content &lt;a href="http://msdn.microsoft.com/en-us/library/ms365247.aspx" target="_blank"&gt;here&lt;/a&gt;). &lt;/li&gt;    &lt;li&gt;Attach your DB files and then find the definitions. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Or, you can just use this script to generate your table (I'm using SQL Server 2005 instead of 2008 on my machine) or to at least get your type definitions etc. I generated this script from the database in the code download. While the code download is SQL Server 2008, I found that this script successfully creates the table in my 2005 Server. The SiteMap table is defined as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;USE [TheBeerHouseVB]      &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;/****** Object:&amp;#160; Table [dbo].[SiteMap]&amp;#160;&amp;#160;&amp;#160; Script Date: 01/07/2010 16:41:55 ******/       &lt;br /&gt;SET ANSI_NULLS ON       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;SET QUOTED_IDENTIFIER ON       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;CREATE TABLE [dbo].[SiteMap](       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [SiteMapId] [int] IDENTITY(1,1) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [URL] [nvarchar](500) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [RealURL] [nvarchar](500) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Title] [nvarchar](256) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Keywords] [nvarchar](500) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Description] [nvarchar](200) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Roles] [nvarchar](100) NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Parent] [int] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [URLId] [int] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [URLType] [nvarchar](50) NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [NodeType] [int] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [SortOrder] [int] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Active] [bit] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [DateAdded] [datetime] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [AddedBy] [nvarchar](50) NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [DateUpdated] [datetime] NOT NULL,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [UpdatedBy] [nvarchar](50) NOT NULL,       &lt;br /&gt;CONSTRAINT [PK_SiteMap] PRIMARY KEY CLUSTERED       &lt;br /&gt;(       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [SiteMapId] ASC       &lt;br /&gt;)WITH (PAD_INDEX&amp;#160; = OFF, STATISTICS_NORECOMPUTE&amp;#160; = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS&amp;#160; = ON, ALLOW_PAGE_LOCKS&amp;#160; = ON) ON [PRIMARY]       &lt;br /&gt;) ON [PRIMARY]       &lt;br /&gt;      &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_Parent]&amp;#160; DEFAULT ((0)) FOR [Parent]       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_URLId]&amp;#160; DEFAULT ((0)) FOR [URLId]       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_NodeType]&amp;#160; DEFAULT ((1)) FOR [NodeType]       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_SortOrder]&amp;#160; DEFAULT ((100)) FOR [SortOrder]       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_Active]&amp;#160; DEFAULT ((1)) FOR [Active]       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_DateAdded]&amp;#160; DEFAULT (getdate()) FOR [DateAdded]       &lt;br /&gt;GO       &lt;br /&gt;      &lt;br /&gt;ALTER TABLE [dbo].[SiteMap] ADD&amp;#160; CONSTRAINT [DF_SiteMap_DateUpdated]&amp;#160; DEFAULT (getdate()) FOR [DateUpdated]       &lt;br /&gt;GO&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MySubHeadings"&gt;Generate an Entity Model for the SiteMap Data&lt;/p&gt;  &lt;p&gt;I actually found that if I went back and implemented some the DESIGN section, there is a pretty decent walk through of creating the Entity Model. There are a few missing pieces I'll add though, and I'll try to point those out as I go (for future reference, these will be marked with an &lt;strong&gt;*Gap-Filled*&lt;/strong&gt; designation).&lt;/p&gt;  &lt;p&gt;First, where should the Entity Model go? I found that the author has this as part of the BLL DLL project (say that 10 times fast). Specifically, it goes in a folder called 'Navigation'. So to create our SiteMap Entity Model, do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;*Gap-Filled* &lt;/strong&gt;Add a new folder to your TBHBLL project's root node and name this folder 'Navigation'. &lt;/li&gt;    &lt;li&gt;Right-Click the Navigation folder and select 'Add'-&amp;gt;'New Item'. &lt;/li&gt;    &lt;li&gt;From the list select 'ADO.Net Entity Data Model (it may be easier to find if you select 'Data' from the list on the left). Name it 'SiteMapModel' and click 'Add'. &lt;/li&gt;    &lt;li&gt;Select 'Generate from database' and click Next. (Note: originally I created a database in my App_Data folder, but found that making any changes to the DB was a major pain in the neck so I opted to nuke it an put it in an external DB, just for sake of easy of working with the DB). &lt;/li&gt;    &lt;li&gt;Select your DB, or if you aren't using the App_Data folder to house your data, click 'New Connection...'. From there, you can create your data connection to your DB. Notice that this creates a connection string for your entity. You'll want to copy this for later use (put it somewhere safe, make your life easier). &lt;/li&gt;    &lt;li&gt;Before clicking next, you'll want to change the setting at the bottom 'Save entity connection settings in app.config as:' to 'SiteMapEntities'. Then click next. &lt;/li&gt;    &lt;li&gt;Now you should select the 'SiteMap' table as the object to include in your model and change the 'Model Namespace' to 'SiteMapModel'. &lt;/li&gt;    &lt;li&gt;Click Finish. &lt;/li&gt;    &lt;li&gt;Once the model is created, it will open a new 'SiteMapModel.edmx' file. We want to make a couple changes here. &lt;/li&gt;    &lt;li&gt;We want to change the name of our model to 'SiteMapInfo' rather than 'SiteMap' so as to &lt;strike&gt;not be&lt;/strike&gt; to be less confusing. Double click the name 'SiteMap' and rename it to 'SiteMapInfo' (alternately, you can select it and use the Properties window). &lt;/li&gt;    &lt;li&gt;Select the 'Active' DB column down in the list and select the properties window. Change the 'Default Value' to 'True'. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;You'll see that this basically creates a file containing two classes: 1. your actual entity object class (SiteMapInfo) and your Data Access Layer class (SiteMapEntities). We'll be extending BOTH these classes later on in this post. Go ahead and close your new SiteMapModel.edmx file and any of the new property windows that you don't want lingering around (I set them to autohide).&lt;/p&gt;  &lt;p class="MySubHeadings"&gt;A BaseRepository Class&lt;/p&gt;  &lt;p&gt;This one is a bit more tricky. I don't feel that it was fully fleshed out in the book. Looking through the source code and through the book, we find that all the repositories we'll be creating inherit from a BaseRepository class. Let's begin by creating this class. &lt;strong&gt;&lt;/strong&gt;Start by creating a BaseRepository file (on page 89):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In the root of your BLL project, create a new folder called 'Context'.&lt;strong&gt;*Gap-Filled*&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Add a new class to your 'Context' folder and name it 'BaseRepository.vb'. &lt;/li&gt;    &lt;li&gt;We need to change the class to be an interface so, change the class definition clause from 'Public Class BaseRepository' by adding the 'MustInherit' keyword. &lt;/li&gt;    &lt;li&gt;Make the class implement the IDisposable interface by adding 'Implements IDisposable' after the definition. &lt;/li&gt;    &lt;li&gt;When you press enter, you'll notice (at least I did) that it actually fleshes out the 'Dispose' subroutines. According to the book, we want those to be stubs only. As we'll define these each time in our repositories. To do this, &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;*Gap-Filled* &lt;/strong&gt;Add the 'MustOverride' keyword to the subroutine's first line. When you do that, all the subsequent stuff in the subroutine will become extraneous and can be removed so that the subroutine is ONLY one line, just defining it. The class should look like this (note: I've added the imports that we'll need before we're done already):       &lt;br /&gt;      &lt;br /&gt;      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Imports System.Web          &lt;br /&gt;Imports System.Web.Caching           &lt;br /&gt;Imports System.Security.Principal           &lt;br /&gt;Imports System.Configuration           &lt;br /&gt;          &lt;br /&gt;Namespace BLL           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public MustInherit Class BaseRepository           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Implements IDisposable&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Private disposedValue As Boolean = False&amp;#160; ' To detect redundant calls           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ' IDisposable           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Protected MustOverride Sub Dispose(ByVal disposing As Boolean)           &lt;br /&gt;          &lt;br /&gt;#Region &amp;quot; IDisposable Support &amp;quot;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Public MustOverride Sub Dispose() Implements IDisposable.Dispose           &lt;br /&gt;          &lt;br /&gt;#End Region&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Class           &lt;br /&gt;          &lt;br /&gt;End Namespace&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;*Gap-Filled* &lt;/strong&gt;If you're continuing to follow in the book, skip the stuff at the bottom of page 89-90. That's that's an example of what we'll do when we inherit from the BaseRepository. Skip down to the 2nd code listing and let's continue adding to our class. Next we add a couple of constants:       &lt;br /&gt;      &lt;br /&gt;      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Public Const DefPageSize As Integer = 50          &lt;br /&gt;Protected Const MAXROWS As Integer = Integer.MaxValue&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Then we want to add some properties that will be part of each of our repositories:      &lt;br /&gt;      &lt;br /&gt;      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;'These need to be definable in config and stored in app cache          &lt;br /&gt;Private _enableCaching As Boolean = True           &lt;br /&gt;Private _cacheDuration As Integer = 0 Public           &lt;br /&gt;          &lt;br /&gt;Property EnableCaching() As Boolean           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _enableCaching           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As Boolean)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _enableCaching = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property           &lt;br /&gt;Public Property CacheDuration() As Integer           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _cacheDuration           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As Integer)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _cacheDuration = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property           &lt;br /&gt;          &lt;br /&gt;Private _cacheKey As String = &amp;quot;CacheKey&amp;quot;           &lt;br /&gt;Public Property CacheKey() As String           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _cacheKey           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _cacheKey = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Somehow, I thought that the code section at the bottom of page 91 was a demonstration of using the Cache code, however upon further investigation, I was incorrect. It also belongs to our BaseRepository class. Add the following to your class:      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Protected Shared ReadOnly Property Cache() As Cache          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return HttpContext.Current.Cache           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;End Property           &lt;br /&gt;          &lt;br /&gt;Protected Shared Sub CacheData(ByVal key As String, _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal data As Object, ByVal iDuration As Integer)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If Not IsNothing(data) Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cache.Insert(key, data, Nothing, _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DateTime.Now.AddSeconds(iDuration), TimeSpan.Zero)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;End Sub           &lt;br /&gt;          &lt;br /&gt;Protected Sub PurgeCacheItems(ByVal prefix As String)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; prefix = prefix.ToLower()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim itemsToRemove As New List(Of String)&amp;#160;&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160; Dim enumerator As IDictionaryEnumerator = Cache.GetEnumerator()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; While enumerator.MoveNext           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If enumerator.Key.ToString().ToLower().StartsWith(prefix) Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; itemsToRemove.Add(enumerator.Key.ToString())           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End While&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For Each itemToRemove As String In itemsToRemove           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cache.Remove(itemToRemove)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Next           &lt;br /&gt;End Sub &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;One note of deviation from the book: if you notice, the CacheData method takes an addition parameter not mentioned in the book. The code download adds an integer parameter called vDuration (which I changed to iDuration).&lt;strong&gt; &lt;/strong&gt;This is used when caching the data to indicate how long it should live. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;We then add the connectionString stuff to our class:       &lt;br /&gt;      &lt;br /&gt;      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Private _connectionString As String = &amp;quot;Set the ConnectionString&amp;quot;          &lt;br /&gt;Public Property ConnectionString() As String           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _connectionString           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _connectionString = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property           &lt;br /&gt;          &lt;br /&gt;Protected Function GetActualConnectionString() As String           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return ConfigurationManager.ConnectionStrings _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (ConnectionString).ConnectionString           &lt;br /&gt;End Function           &lt;br /&gt;&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p class="MySubHeadings"&gt;Some Code for our Helpers Class&lt;/p&gt;  &lt;p&gt;If you follow the book, you'll notice a section in the middle of page 93 with code for three properties (CurrentUser, CurrentUserName and CurrentUserIP). There is a discrepancy between this code from the book and the code from the download. Basically the code here in the book belongs in our Helpers class. The repository DOES define these three properties, however, they call to the Helpers class to retrieve the information. I am unsure why the BaseRepository would need this if we already define them in the Helpers class (and in fact GET the data directly from the Helpers class), but they are in the BaseRepository.&lt;/p&gt;  &lt;p&gt;All discussion of that aside, the code in the middle of page 93, at least according to the code download actually goes in our Helpers class (created in chapter 2). Take a break from your BaseRepository class and add the following to your Helpers class &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Imports System.Security.Principal      &lt;br /&gt;      &lt;br /&gt;Protected Shared ReadOnly Property CurrentUser() As IPrincipal       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return HttpContext.Current.User       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Protected Shared ReadOnly Property CurrentUserName() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim userName As String = String.Empty       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If CurrentUser.Identity.IsAuthenticated Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; userName = CurrentUser.Identity.Name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return userName       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Protected Shared ReadOnly Property CurrentUserIP() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return HttpContext.Current.Request.UserHostAddress       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MySubHeadings"&gt;Back to the BaseRepository Class&lt;/p&gt;  &lt;p&gt;We aren't done with the base repository class, we need to go back to the class now that we've finished our Helpers module diversion. Beginning again with the function at the bottom of page 93, we'll add the following to our BaseRepository class &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected Shared Function EncodeText(ByVal content As String) As String      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; content = HttpUtility.HtmlEncode(content)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; content = content.Replace(&amp;quot;&amp;#160; &amp;quot;, &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;).Replace(&amp;quot;\n&amp;quot;, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return content       &lt;br /&gt;End Function       &lt;br /&gt;      &lt;br /&gt;Protected Shared Function ConvertNullToEmptyString _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (ByVal input As String) As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If String.IsNullOrEmpty(input) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return String.Empty       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return input       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;End Function&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That fooled me. Reading the book I thought these two should go into the helpers module, but looking trough the code in the files, I found that they actually belong in the BaseRepository class.&lt;/p&gt;  &lt;p&gt;I also found reference to a couple methods in the BaseRepository class that I couldn't readily find in the text. Once such is the GetRandItem function. In searching out references to the BaseRepository class in other sections of the book I found a reference UTILZING this function, but not DEFINING it. As such, I'll take the time to define it here so we'll have it in our BaseRepository class. You'll recognize that it's bascially just a random number generator. Add the following function to your BaseRepository class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public Function GetRandItem(ByVal min As Integer, ByVal max As Integer) As Integer      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Randomize()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return Int((max - min) * Rnd())       &lt;br /&gt;End Function&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Finally, we can add (and I'd consider it optional) the three properties that call our Helpers class. If you want, add the following to your BaseRepository class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected Shared ReadOnly Property CurrentUser() As IPrincipal      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Helpers.CurrentUser       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Protected Shared ReadOnly Property CurrentUserName() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Helpers.CurrentUserName       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Protected Shared ReadOnly Property CurrentUserIP() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Helpers.CurrentUserIP       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Again, you'll notice that they just call the properties we called in the Helpers class.&lt;/p&gt;  &lt;p class="MySubHeadings"&gt;Creating a SiteMapRepository Class&lt;/p&gt;  &lt;p&gt;As far as I can tell, the code for the SiteMapRepository is missing from the book in a major way. The example in this section gives us some sample code for the ArticlesRepository and its related classes (categories etc) but not for the SiteMapRepository class itself. We'll jump around a little to create this and hopefully come up with something that works. Let's get started:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;We want to create a SiteMapRepository Class, this should be created in the Navigation folder &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;This class should inherit the BaseRepository class that we just created, which will automatically give us stubs for the Dispose methods. To complete the stubs, we should go back to page 89 and pick out from the last code block to fill in our stubs. Add the following to your SiteMapRepository class's Dispose() methods:      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Public Overloads Overrides Sub Dispose()          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dispose(True)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; GC.SuppressFinalize(Me)           &lt;br /&gt;End Sub           &lt;br /&gt;          &lt;br /&gt;Private disposedValue As Boolean = False           &lt;br /&gt;Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If Not Me.disposedValue Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If disposing Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If IsNothing(_SiteMapctx) = False Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _SiteMapctx.Dispose()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Me.disposedValue = True           &lt;br /&gt;End Sub&lt;/p&gt;     &lt;/blockquote&gt; Two items of note: 1. There is a private variable declared OUTSIDE our methods we need to create: disposedValue. 2. We'll get an undefined error regarding the _SiteMapctx object referenced in the 2nd dispose method, we need to define this.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Do do this, we can examine the code from the ArticlesRespoitory on page 94 and modify it to be our SiteMapRespository code. Add the following to your SiteMapRepository class.      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Private _SiteMapctx As SiteMapEntities          &lt;br /&gt;Public Property SiteMapctx() As SiteMapEntities           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If IsNothing(_SiteMapctx) Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _SiteMapctx = New SiteMapEntities _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (GetActualConnectionString())           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _SiteMapctx           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As SiteMapEntities)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _SiteMapctx = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;At this point, the book examines the contents of a entity (see page 95-98). This helps us better understand what is going on in side the entity class. Uh, so were do you find &lt;u&gt;this&lt;/u&gt; code? (I'm digressing a little, but the code can be found in the designer.vb file for your model.edmx file. In VS.Net, this file is hidden, you have to select the button at the top of the Solution Explorer to view all files to see this file. When you select it, then you'll see a plus in front of your model.edmx file. Clicking it reveals the model.designer.vb file. This is where the content of the 'entity' class guts discussed in these pages resides &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;). &lt;/li&gt;    &lt;li&gt;There is also a discussion of the IBaseEntity interface inserted in page 98. I'll talk about that in a minute, but for the time being, let's stick with our repository just for the sake of keeping things together. &lt;/li&gt;    &lt;li&gt;So, we also need a constructor for our SiteMapRepository, this also is somewhat tucked away, it is in the BaseRespository section of the book. If you reference pg 92, you'll see a code block at the bottom of the page containing the constructors for our SiteMapRepository. Add the following to your SiteMapRespository.vb file &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:       &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Public Sub New(ByVal sConnectionString As String)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ConnectionString = sConnectionString           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CacheKey = &amp;quot;SiteMap&amp;quot;           &lt;br /&gt;End Sub           &lt;br /&gt;          &lt;br /&gt;Public Sub New()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ConnectionString = Globals.Settings.DefaultConnectionStringName           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CacheKey = &amp;quot;SiteMap&amp;quot;           &lt;br /&gt;End Sub           &lt;br /&gt;&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;The next piece of the repository that I found was on page 138. There is a GetSiteMapInfoByURL function that is defined there that we can add to our repository. Add the following code to your repository:      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Public Function GetSiteMapInfoByURL(ByVal URL As String) _          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; As SiteMapInfo           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return (From lai In SiteMapctx.SiteMapInfoSet _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where lai.URL = URL).FirstOrDefault()           &lt;br /&gt;          &lt;br /&gt;End Function &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;That leaves quite a few of the methods undefined (as much because we don't know what they are as anything else). So I began a search through chapter three to see if I can find any more of these methods lurking around. I found one on page 73, funny enough though, this method is added upon when we get to page 101 when we add the caching bits into it. I'll just go straight to this piece on page 101 and do it all. Add the following to your repository (note there are discrepancies between the project download code and the code in the book - such as the addition of CacheDuration):      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Private key as String = &amp;quot;SiteMapNodes&amp;quot;          &lt;br /&gt;Public Function GetSiteMapNodes() As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim lSiteMapNodes As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If EnableCaching AndAlso Not IsNothing(Cache(key)) Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = CType(Cache(key), List(Of SiteMapInfo))           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.SiteMapInfoSet.MergeOption = _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Objects.MergeOption.NoTracking           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = (From lSiteMapNode In _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.SiteMapInfoSet Order By _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNode.SortOrder).ToList()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If EnableCaching Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CacheData(key, lSiteMapNodes, CacheDuration)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return lSiteMapNodes           &lt;br /&gt;End Function &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;And, that's about all I can find regarding the SiteMapRespository's methods in the book. So I was forced to find the rest of them in the code download. Really, I think it's rather unfortunate the book doesn't have any of the rest of the code, but here's what I found to add &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:       &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Private tsnKey As String = &amp;quot;TopSiteMapNodes&amp;quot;          &lt;br /&gt;Public Function GetActiveSiteMapNodes() As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim lSiteMapNodes As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim lActiveSiteMapKey As String = CacheKey &amp;amp; &amp;quot;_Active&amp;quot;           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If MyBase.EnableCaching AndAlso _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Not IsNothing(Cache(lActiveSiteMapKey)) Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = CType(Cache(lActiveSiteMapKey), _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List(Of SiteMapInfo))           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Else           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = (From lSiteMapNode In _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.SiteMapInfoSet _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where lSiteMapNode.Active = True Order By _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNode.SortOrder).ToList()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If MyBase.EnableCaching Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CacheData(lActiveSiteMapKey, lSiteMapNodes, CacheDuration)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return lSiteMapNodes           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function GetTopSiteMapNodes() As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim lSiteMapNodes As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If Not IsNothing(Cache(tsnKey)) Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = CType(Cache(tsnKey), List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Else           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = (From lSiteMapNode In _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.SiteMapInfoSet _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where lSiteMapNode.Active = True And _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNode.Parent = 0 _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Order By lSiteMapNode.SortOrder).ToList()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CacheData(tsnKey, lSiteMapNodes, CacheDuration)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return lSiteMapNodes           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function GetSiteMap() As List(Of SiteMapInfo)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return (From lSiteMap In SiteMapctx.SiteMapInfoSet _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where lSiteMap.Active = True).ToList()           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function GetSiteMapByID(ByVal SiteMapId As Integer) _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; As SiteMapInfo           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return (From lai In SiteMapctx.SiteMapInfoSet _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where lai.SiteMapId = SiteMapId).FirstOrDefault           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function GetSiteMapInfoByRealURL(ByVal URL As String) _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; As SiteMapInfo           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return (From lsmi In SiteMapctx.SiteMapInfoSet _&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where lsmi.RealURL = URL).FirstOrDefault()           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function GetSiteMapCount() As Integer           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return (From lai In SiteMapctx.SiteMapInfoSet).Count()           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function AddSiteMap(ByVal vSiteMap As SiteMapInfo) _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; As SiteMapInfo           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Try           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If vSiteMap.EntityState = EntityState.Detached Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.AddToSiteMapInfoSet(vSiteMap)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MyBase.PurgeCacheItems(CacheKey)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return If(SiteMapctx.SaveChanges &amp;gt; 0, vSiteMap, Nothing)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Catch ex As Exception           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ActiveExceptions.add(CacheKey &amp;amp; &amp;quot;_&amp;quot; &amp;amp; vSiteMap.SiteMapId, ex)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Nothing           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Try           &lt;br /&gt;End Function           &lt;br /&gt;          &lt;br /&gt;Public Function DeleteSiteMap(ByVal vSiteMap As SiteMapInfo) As Boolean           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Try           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.DeleteObject(vSiteMap)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapctx.SaveChanges()           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MyBase.PurgeCacheItems(CacheKey)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return True           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Catch ex As Exception           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return False           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Try           &lt;br /&gt;End Function&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Here's the definitive list of methods that we should have that I found from the project files (in no particular order):      &lt;br /&gt;      &lt;br /&gt;GetSiteMapInfoByURL()       &lt;br /&gt;GetSiteMapNodes()       &lt;br /&gt;GetActiveSiteMapNodes()       &lt;br /&gt;GetTopSiteMapNodes()       &lt;br /&gt;GetSiteMap()       &lt;br /&gt;GetSiteMapByID()       &lt;br /&gt;GetSiteMapInfoByRealURL()       &lt;br /&gt;GetSiteMapCout()       &lt;br /&gt;AddSiteMap()       &lt;br /&gt;DeleteSiteMap()       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Finally, if you notice you probably have an error about ActiveExceptions not being defined (in your AddSiteMap() function). This needs defined, however it is defined in the BaseRepository.vb class. So we'll go back one more time to our BaseRepository.vb class. &lt;/li&gt; &lt;/ol&gt;  &lt;p class="MySubHeadings"&gt;Back to the BaseRepository Class (Again)&lt;/p&gt;  &lt;p&gt;We've got one more property to add to our BaseRepository class so that we can track exceptions that occur. While we are using this property here in Chapter 3 in our SiteMapRepository class, it isn't actually defined until Chapter 5. The definition of this property is found on page 262 (&lt;strong&gt;*Gap-Filled*&lt;/strong&gt;). Add the following to your BaseRepository.vb class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private _activeExceptions As Dictionary(Of String, Exception)      &lt;br /&gt;Public Property ActiveExceptions() As Dictionary(Of String, Exception)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If IsNothing(_activeExceptions) Then _activeExceptions = _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; New Dictionary(Of String, Exception)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _activeExceptions       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As Dictionary(Of String, Exception))       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _activeExceptions = value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;End Property       &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MySubHeadings"&gt;The IBaseEntity Interface&lt;/p&gt;  &lt;p&gt;Tucked nicely away in the discussion of entities the definition of an interface for an entity. If you blink you'll miss it. We'll use this later as the interface when we extend our entity class. To create this interface, do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a new 'Interfaces' folder in your BLL project &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In this folder add a new class and name it 'IBaseEntity'. &lt;/li&gt;    &lt;li&gt;Change the contents of the file to read as follows &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:       &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Namespace BLL          &lt;br /&gt;&amp;#160;&amp;#160; Public Interface IBaseEntity&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReadOnly Property IsValid() As Boolean           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property SetName() As String           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Property IsDirty() as Boolean           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReadOnly Property CanEdit() As Boolean           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReadOnly Property CanRead() As Boolean           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReadOnly Property CanDelete() As Boolean           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ReadOnly Property CanAdd() As Boolean           &lt;br /&gt;&amp;#160;&amp;#160; End Interface           &lt;br /&gt;End Namespace           &lt;br /&gt;&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Notice that we're adding an additional Property that wasn't defined in the chapter, IsDirty. This is defined in the project files that were downloaded. &lt;/li&gt;    &lt;li&gt;That's it for IBaseEntity, we'll use it when we create entities (for example, an article, or category class). When we create the entity class, they will implement this interface. If you want to see an example of how it is implemented, look at the code block at the top of pg. 99. &lt;/li&gt; &lt;/ol&gt;  &lt;p class="MySubHeadings"&gt;Extending the SiteMapInfo Class (Originally Generated in the Model)&lt;/p&gt;  &lt;p&gt;It took me a long time to understand what's going one with some of the files in the final solution project and how they relate to each other. This piece is one of them. If you download the final project files, you'll find a file 'SiteMapNode.vb' in the Navigation folder. It took me forever to understand the relationship of this file to ANY of the others. It is an extension of the partial SiteMapInfo class that was generated in the Model file (SiteMapModel.Desiger.VB). You'll also notice that we also extend the SiteMapEntities class that is ALSO in the Model file. As I understand the difference between this two pieces, the SiteMapEntities Class is the ObjectContext class, or the data plumbing (the part that talks to the database - the Data Access Layer if you will). And the SiteMapInfo class is the actual object (or instance of an entity) created by one of the records in our database. BOTH get extended and in different code files. So with no further ado, let's extend our SiteMapInfo class to use our IBaseEntity and add definitions for the items that we created in our interface. I couldn't find code for these properties in the book, with the exception of the IsValid property I found on page 99. The rest of this came from the finished project file.&lt;/p&gt;  &lt;p&gt;So let's do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a new class module in your Navigation folder and name it 'SiteMapNode.vb'. &lt;/li&gt;    &lt;li&gt;We'll want to modify the name of the class so that it connects with the SiteMapInfo partial class, so rename the class that was created automatically to 'SiteMapInfo.' We also want it to implement our IBaseEntity interface as well so we'll do that at the same time. (and we'll add namespace information too). Your module should start out looking like this (I'm not showing the stubs auto created by pressing enter after the implements statement):      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Namespace BLL&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Class SiteMapInfo           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Implements IBaseEntity&amp;#160; &lt;br /&gt;          &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Class           &lt;br /&gt;End Namespace&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Now we can define the properties in the class. All the CanXYZ properties are pretty easy to define. All we do is add a single line to each (and they're all the same). Add the following line to the CanAdd, CanDelete, CanEdit and CanRead properties:      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Return True&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Then we can define the IsXYZ properties. These are not the same as each other. Altogether they should read like this:      &lt;br /&gt;      &lt;br /&gt;      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Dim bIsDirty As Boolean = False          &lt;br /&gt;Public Property IsDirty() As Boolean Implements IBaseEntity.IsDirty           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return bIsDirty           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As Boolean)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bIsDirty = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property           &lt;br /&gt;          &lt;br /&gt;Public ReadOnly Property IsValid() As Boolean Implements _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IBaseEntity.IsValid           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If String.IsNullOrEmpty(URL) = False And _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String.IsNullOrEmpty(RealURL) = False And _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String.IsNullOrEmpty(Title) = False Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return True           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return False           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;End Property           &lt;br /&gt;          &lt;br /&gt;Private _SetName As String = &amp;quot;SiteMap&amp;quot;           &lt;br /&gt;Public Property SetName() As String Implements IBaseEntity.SetName           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _SetName           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _SetName = value           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set           &lt;br /&gt;End Property&lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;Finally, we want to extend a partial Sub declared in our SiteMapInfo class (in the model file) (see page 99-100). This allows us to do a little validation. Add the following Sub to your class:      &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Private Sub OnSiteMapIdChanging(ByVal value As Integer)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If value &amp;lt; 0 Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Throw New ArgumentException(&amp;quot;The SiteMapId _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cannot be less than 0.&amp;quot;)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;End Sub &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p class="MySubHeadings"&gt;Extending the SiteMapEntities Class (Originally Generated in the Model)&lt;/p&gt;  &lt;p&gt;On page 86 we are told that we are going to add one event handler to our SiteMapEntities class, SavingChanges. To do this, we will again leverage partial classes much as we did with OnSiteMapIdChanging in our SiteMapInfo class above. To do this, do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add a new class to your project, this should be added to the 'Navigation' folder and should be named 'SiteMapEntities.vb'. &lt;/li&gt;    &lt;li&gt;Add the following code to your SiteMapEntities.vb class file (from page 86)&lt;strong&gt;*Gap-Filled*&lt;/strong&gt; (Sorry for the ugly formatting, some of the lines are rather long):       &lt;blockquote&gt;       &lt;p class="CodeSnippet"&gt;Namespace BLL          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Class SiteMapEntities           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Sub SiteMapentities_SavingChanges( _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal sender As Object, ByVal e As System.EventArgs) _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Handles Me.SavingChanges           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim typeEntries = (From entry In _&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Me.ObjectStateManager.GetObjectStateEntries _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (EntityState.Added Or EntityState.Modified) _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Where TypeOf entry.Entity Is IBaseEntity).ToList()&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For Each ose As System.Data.Objects.ObjectStateEntry _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; In typeEntries           &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim lBaseEntity As IBaseEntity = _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectCast(ose.Entity, IBaseEntity)&amp;#160; &lt;br /&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If lBaseEntity.IsValid = False Then           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Throw New BeerHouseDataException _           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (String.Format(&amp;quot;{0} is not valid&amp;quot;, _&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lBaseEntity.SetName), &amp;quot;&amp;quot;, &amp;quot;&amp;quot;)           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Sub           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Class           &lt;br /&gt;End Namespace &lt;/p&gt;     &lt;/blockquote&gt;   &lt;/li&gt;    &lt;li&gt;This class is used to validate the entries that will be saved. It cycles through all the Added and Modified entries and then tests them for validity. If they fail, then an exception is thrown.      &lt;br /&gt;      &lt;br /&gt;NOTE: A custom BeerHouseDataException is used here, I could not find any mention of it in Chapter 3, and it isn't listed in the index. So, I will provide it as found directly in the project files. &lt;/li&gt; &lt;/ol&gt;  &lt;p class="MySubHeadings"&gt;A BeerHouseDataException Class&lt;/p&gt;  &lt;p&gt;I found the following code for the BeerHouseDataExeception Class. This class should be created in the root of the BLL project and is named BeerHouseDataException.vb. Define our class as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public Class BeerHouseDataException      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Inherits Exception&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _propertyName As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Property PropertyName() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _propertyName       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _propertyName = value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Property&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _propertyValue As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Property PropertyValue() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _propertyValue       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _propertyValue = value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Property&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Sub New(ByVal Message As String, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal Innerexception As Exception, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal PropName As String, ByVal PropValue As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MyBase.New(Message, Innerexception)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PropertyName = PropName       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PropertyValue = PropValue       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Sub New(ByVal Message As String, ByVal PropName As String, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal PropValue As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Me.New(Message, Nothing, PropName, PropValue)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Sub New(ByVal PropName As String, ByVal PropValue As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Me.New(&amp;quot;A Property of an object was improperly set&amp;quot;, Nothing, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PropName, PropValue)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub       &lt;br /&gt;End Class&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MyHeadings"&gt;Epilogue &lt;/p&gt;  &lt;p&gt;Well, we've actually covered quite a bit of code. I found when I read the chapter a few times that more of the code was in there than I originally thought, but that there were some CRITICAL pieces that are just plain missing.&lt;/p&gt;  &lt;p&gt;You'll also notice that there is still a lot of code missing. Since this blog posting is getting kind of long, I will continue filling gaps in this chapter in a Part 2. Some of the things that may still need addressed include: the SiteMap handler, a custom SiteMap provider and some URL rewrite code to name a few.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx&amp;amp;;subject=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+1" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx&amp;amp;;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+1" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx&amp;amp;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+1" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx&amp;amp;;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+1" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx&amp;amp;;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+1&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=61585" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/net_discoveries/archive/tags/Asp.net/default.aspx">Asp.net</category></item><item><title>Filling in the Gaps - Problem Design Solution 3.5 - Part 2</title><link>http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx</link><pubDate>Fri, 19 Mar 2010 18:29:58 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:61586</guid><dc:creator>Yougotiger</dc:creator><slash:comments>0</slash:comments><description>&lt;p class="MyHeadings"&gt;Prologue&lt;/p&gt;  &lt;p&gt;In a &lt;a href="http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-1.aspx" target="_blank"&gt;previous post&lt;/a&gt;, I began dissecting the code in my ASP.Net 3.5 Website Programming: Problem - Design - Solution book attempting to fill in gaps that I found (such as where does the code in the book go and adding in code missing from the book). This is a continuation of that post, continuing in Chapter 3.&lt;/p&gt;  &lt;p class="MyHeadings"&gt;Problem&lt;/p&gt;  &lt;p&gt;In this post, I will attempt to address the missing pieces regarding:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The BasePage class. &lt;/li&gt;    &lt;li&gt;The SiteMap Provider. &lt;/li&gt;    &lt;li&gt;The SiteMap Handler. &lt;/li&gt;    &lt;li&gt;A URL Rewrite Class. &lt;/li&gt;    &lt;li&gt;An addition to our Helper Class. &lt;/li&gt;    &lt;li&gt;Configuring the ELMAH Error Logging Add-In. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So with no further ado, let's get started.&lt;/p&gt;  &lt;p class="MyHeadings"&gt;Solution&lt;/p&gt;  &lt;p&gt;The BasePage Class has a fair amount of code presented in the book. Specifically I found the following code pieces in chapter 3:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The MoveHiddenFields Property (pg 106) &lt;/li&gt;    &lt;li&gt;The MoveHiddenFieldsToBottom Function (pg 106) &lt;/li&gt;    &lt;li&gt;The OverRidden Render Subroutine (pg 107) &lt;/li&gt;    &lt;li&gt;The PrimaryKeyID Property (pg 107) &lt;/li&gt;    &lt;li&gt;The CreateMetaControl Subroutine (pg 138) &lt;/li&gt;    &lt;li&gt;The GetMetaValue Function (pg 139) &lt;/li&gt;    &lt;li&gt;The PageKeyWords Property (pg 139) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I did find, however, that we should also include a property to add content to the Description META tag. Adding this functionality is mentioned on page 121, however code is not included. It's very similar to your PageKeyWords property. This PageDescription property should be added to your BasePage class as follows &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected Property PageDescription() As String      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return GetMetaValue(&amp;quot;DESCRIPTION&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateMetaControl(&amp;quot;DESCRIPTION&amp;quot;, value)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I also found, mentioned on page 122, a Robots META tag. I was unable to find any listing of this code in the book or in the downloaded files. So I created my own &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;. The book mentioned that the content section of the tag could contain combinations of action (index, noindex) and directive (follow, nofollow). I created an enumeration of the six valid values (including all and none) and called the CreateMetaControl with the corresponding string values. The code is as follows &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected Enum RobotMetaOptions      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IndexFollow       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IndexNoFollow       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; NoIndexFollow       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; NoIndexNoFollow       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; All       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; None       &lt;br /&gt;End Enum       &lt;br /&gt;Protected Property PageRobotMeta() As RobotMetaOptions       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return GetMetaValue(&amp;quot;ROBOTS&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As RobotMetaOptions)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Select Case value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case RobotMetaOptions.IndexFollow, RobotMetaOptions.All       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateMetaControl(&amp;quot;ROBOTS&amp;quot;, &amp;quot;index, follow&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case RobotMetaOptions.IndexNoFollow       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateMetaControl(&amp;quot;ROBOTS&amp;quot;, &amp;quot;index, nofollow&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case RobotMetaOptions.NoIndexFollow       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateMetaControl(&amp;quot;ROBOTS&amp;quot;, &amp;quot;noindex, follow&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Case RobotMetaOptions.NoIndexNoFollow, RobotMetaOptions.None       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateMetaControl(&amp;quot;ROBOTS&amp;quot;, &amp;quot;noindex, nofollow&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Select       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In looking around the web, it seems that really, the index-follow option (or all option) is redundant since that is the default action if there is no Robots META tag. I included the options just for the sake of completeness.&lt;/p&gt;  &lt;p&gt;We can also notice that there is reference on page 121 to page title information. I found that again this is added in the code download, but I didn't find reference to it in the book. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt; I added the following property from the code download for PageTitle to my BasePage class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected Property PageTitle() As String      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Not IsNothing(Master) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Master.Page.Title = String.Empty Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return String.Empty       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Master.Page.Title       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Page.Title = String.Empty Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return String.Empty       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Page.Title       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Not IsNothing(Master) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Master.Page.Title = value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page.Title = value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There are a couple of other methods that I think may come in handy. Since I haven't read past this chapter yet, I'm not sure if they are added later as I can't find them in the index, but they are in the code download. I decided to add them just in case. I added the following to my BasePage class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public ReadOnly Property BaseUrl() As String      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim url As String = Me.Request.ApplicationPath       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If url.EndsWith(&amp;quot;/&amp;quot;) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return url       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return url &amp;amp; &amp;quot;/&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Public ReadOnly Property FullBaseUrl() As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return Me.Request.Url.AbsoluteUri.Replace( _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Me.Request.Url.PathAndQuery, &amp;quot;&amp;quot;) &amp;amp; Me.BaseUrl       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There were also a couple that I decided NOT to add as I felt it was redundant to add them just to have them call the Helpers class. These include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SEOFriendlyURL &lt;/li&gt;    &lt;li&gt;ConvertToHTML &lt;/li&gt;    &lt;li&gt;GetUserProfile &lt;/li&gt;    &lt;li&gt;FormatPrice &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Looking through the rest of the code, I'm thinking that some of that may be added later in the book or at least it may not apply till later so I will move on to the next class that needs work.&lt;/p&gt;  &lt;p class="MySubHeadings"&gt;A Custom SiteMapProvider&lt;/p&gt;  &lt;p&gt;On page 125, we're informed that we should be using a custom SiteMapProvider to generate our site map. Unfortunately, we aren't given ANY code that I find on how this is done with the exception of the settings to register the provider in the web.config file. We'll come back to that piece, but first let's create the provider so we know what to register. We're told that we can get a good primer on doing this from a &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163657.aspx" target="_blank"&gt;series of 2006 MSDN articles&lt;/a&gt;. I found that some of the code comes across into our code download, and some doesn't. Also the article is in C#, so I relied heavily on the code download. Create a TBHSiteMapProvider.vb class in your 'navigation' folder &lt;strong&gt;*Gap-Filled*&lt;/strong&gt; and add the following to get started:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public Class TBHSiteMapProvider      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Inherits StaticSiteMapProvider&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg1 As String = &amp;quot;Missing node ID&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg2 As String = &amp;quot;Duplicate node ID&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg3 As String = &amp;quot;Missing parent ID&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg4 As String = &amp;quot;Invalid parent ID&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg5 As String = &amp;quot;Empty or missing connectionStringName&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg6 As String = &amp;quot;Missing connection string&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private Const _errmsg7 As String = &amp;quot;Empty connection string&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160; Private Const _errmsg8 As String = &amp;quot;Invalid sqlCacheDependency&amp;quot;&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Const _cacheDependancyName As String = &amp;quot;__SiteMapCacheDependency&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _connect As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _database, _table As String       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _2005dependency As Boolean = False       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _indexID, _indexTitle, _indexUrl, _indexDesc, indexRoles, _indexParent As Integer       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _nodes As New Dictionary(Of Integer, SiteMapNode)(16)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Private _root As SiteMapNode       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public ReadOnly _lock As Object = New Object()&amp;#160; &lt;br /&gt;      &lt;br /&gt;End Class&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This will get our class started, you may need to add import statements as the need arises, but this gets our class going. You'll notice that our class declaration gives us an error. We need to define a number of methods in this class before it will compile. So let's get started, create an Initialize method. The code IS different than on the MSDN article starting from about the half way point. Add the following to your class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public Overloads Overrides Sub Initialize(ByVal name As String, _      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal config As NameValueCollection)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 'Verify parameters       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If IsNothing(config) Then Throw New ArgumentNullException(&amp;quot;config&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If String.IsNullOrEmpty(name) Then name = &amp;quot;TBHSiteMapProvider&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 'add default desc to config if empty       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If String.IsNullOrEmpty(config(&amp;quot;description&amp;quot;)) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; config.Remove(&amp;quot;description&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; config.Add(&amp;quot;description&amp;quot;, &amp;quot;SQL site map provider&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 'call base's initialize       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MyBase.Initialize(name, config)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If config(&amp;quot;securityTrimmingEnabled&amp;quot;) Is Nothing Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; config.Remove(&amp;quot;securityTrimmingEnabled&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If config.Count &amp;gt; 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim attr As String = config.GetKey(0)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Not String.IsNullOrEmpty(attr) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Throw New ProviderException(&amp;quot;Unrecognized attribute: &amp;quot; &amp;amp; attr)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;We also need to add one of the required methods BuildSiteMap. This method is substantially changed from the one in the MSDN article, so I pulled it from the downloaded code. However, this version used two other methods that haven't been created yet. We'll start with those methods and then come back to the BuildSiteMap. Add the following two methods to your class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private Function CreateSiteMapNodeFromSiteMapEntity(ByVal node As _      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SiteMapInfo) As SiteMapNode       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim roles As String = If(node.Roles, Nothing)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 'if roles were specified, turn the list into a string array       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim roleList As String() = Nothing       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If Not String.IsNullOrEmpty(roles) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; roleList = roles.Split(New Char() {&amp;quot;,&amp;quot;c, &amp;quot;;&amp;quot;c}, 512)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 'create SiteMapNode       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim _node As New SiteMapNode(Me, node.SiteMapId.ToString(), _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; node.URL, node.Title, node.Description, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; roleList, Nothing, Nothing, Nothing)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 'record node in the _nodes directory       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; _nodes.Add(node.SiteMapId, _node)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return _node       &lt;br /&gt;End Function       &lt;br /&gt;      &lt;br /&gt;Private Sub AddChildNodes(ByVal vParentNode As SiteMapNode, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal SiteMapId As Integer)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim lChildNodes As List(Of SiteMapInfo) = (From lChildren In _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes Where lChildren.Parent = SiteMapId).ToList()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For Each lChildNode As SiteMapInfo In lChildNodes       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim lNode As SiteMapNode = _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateSiteMapNodeFromSiteMapEntity(lChildNode)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AddNode(lNode, vParentNode)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AddChildNodes(lNode, lChildNode.SiteMapId)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Next       &lt;br /&gt;End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You'll notice if you look at the MSDN article, that they aren't included there so they are newly created for our project from the code download. Now that they're defined, we're ready to add the BuildSiteMap method:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected lSiteMapNodes As List(Of SiteMapInfo)      &lt;br /&gt;Public Overrides Function BuildSiteMap() As SiteMapNode       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SyncLock _lock       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If _root IsNot Nothing Then Return _root       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using lSiteMapContext As New SiteMapRepository       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = lSiteMapContext.GetSiteMapNodes()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If lSiteMapNodes.Count &amp;gt; 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim node As SiteMapInfo = (From lSiteMapNode In _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes Where lSiteMapNode.Parent = 0).FirstOrDefault       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Not IsNothing(node) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _root = CreateSiteMapNodeFromSiteMapEntity(node)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AddNode(_root, Nothing)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AddChildNodes(_root, node.SiteMapId)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Using       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _root       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End SyncLock       &lt;br /&gt;End Function&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you look at the errors, you'll see that we still have to define another overridden function, GetRootNodeCore. Again, we'll go to the code download since it isn't in the article or the book. Add the following to your class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Protected Overloads Overrides Function GetRootNodeCore() As SiteMapNode      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SyncLock _lock       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BuildSiteMap()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _root       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End SyncLock       &lt;br /&gt;End Function&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It's a pretty simple function, but necessary. The provider also needs to be registered in the web.config file. To do this, add the following to your web.config file, it should go somewhere in your &amp;lt;system.web&amp;gt; element:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;&amp;lt;siteMap defaultProvider=&amp;quot;TBHSiteMapProvider&amp;quot; enabled=&amp;quot;true&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;providers&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add name=&amp;quot;TBHSiteMapProvider&amp;quot;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; type=&amp;quot;TheBeerHouse.TBHSiteMapProvider&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; securityTrimmingEnabled=&amp;quot;true&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/providers&amp;gt;       &lt;br /&gt;&amp;lt;/siteMap&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There are two other methods in the downloaded code, however I'm not sure exactly what they do, I can't that they are called/referenced anywhere else. Since I don't see where they are used (at least at this point), I haven't included them.&lt;/p&gt;  &lt;p class="MySubHeadings"&gt;A SiteMapHandler Class&lt;/p&gt;  &lt;p&gt;This class is a handler that returns the sitemap.xml file used by search engine spiders so that our site can be easily indexed. This class DOES have some code included in the book, specifically it starts on page 126. Before we delve into the code there, let's create our file by adding a new class to the navigation folder and naming it 'SiteMapsHandler.vb' &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;. Following the code in the book starting at the bottom of page 126, we want to make sure that our class implements the iHttpHandler interface (requiring import of System.Web). When you press enter, you'll get stubs for two required elements (IsReusable property and ProcessRequest Method).&lt;/p&gt;  &lt;p&gt;The IsReusable property can just return true &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;. ProcessRequest has a few more lines, but only a couple. You can find them at the top of page 127. As we start, your class should look like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Imports System.Web      &lt;br /&gt;      &lt;br /&gt;Public Class SiteMapHandler       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Implements IHttpHandler&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public ReadOnly Property IsReusable() As Boolean Implements _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.Web.IHttpHandler.IsReusable       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Get&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return True       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Property&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Implements System.Web.IHttpHandler.ProcessRequest&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BaseContext = context       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateSiteMap()       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.Flush()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Response.End()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub       &lt;br /&gt;      &lt;br /&gt;End Class&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You'll notice that about every line gives us an error since nearly everything in this method is undefined. Examining the downloaded file, we find that these undefined items are actually properties created in our class (with the exception of CreateSiteMap()) &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;. Add the following properties to your class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Dim _baseContext As HttpContext      &lt;br /&gt;Public Property BaseContext() As HttpContext       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _baseContext       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set(ByVal value As HttpContext)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _baseContext = value       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Set       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Public ReadOnly Property Response() As HttpResponse       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return BaseContext.Response       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property       &lt;br /&gt;      &lt;br /&gt;Public ReadOnly Property Request() As HttpRequest       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Get       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return BaseContext.Request       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Get       &lt;br /&gt;End Property&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This will take care of all but our CreateSiteMap() method error. So without further ado we'll add our CreateSiteMap method. This can be found on page 128. (Note: if you haven't used XDocument to do XML before, it is very particular about where you put your %&amp;gt; characters so follow the below code exactly so that you don't get errors - I learned by hard experience since I hadn't used it before). Add the following for your CreateSiteMap method:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private Sub CreateSiteMap()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Response.ContentType = &amp;quot;application/xml&amp;quot;&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim lSiteMapNodes As List(Of SiteMapInfo)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Using siteMaprpt As New SiteMapRepository       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMapNodes = siteMaprpt.GetSiteMapNodes       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Using&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim xSiteMap As XDocument = &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;urlset xmlns=&amp;quot;http://www.sitemaps.org/schemas/sitemap/0.9&amp;quot;&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= From lSiteMapNode In lSiteMapNodes.AsEnumerable _&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Select &amp;lt;url&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;loc&amp;gt;&amp;lt;%= lSiteMapNode.URL %&amp;gt;&amp;lt;/loc&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;lastmod&amp;gt;&amp;lt;%= lSiteMapNode.DateUpdated %&amp;gt;&amp;lt;/lastmod&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;changefreq&amp;gt;weekly&amp;lt;/changefreq&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;priority&amp;gt;0&amp;lt;/priority&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/url&amp;gt; %&amp;gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/urlset&amp;gt;&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Response.Write(xSiteMap.ToString())       &lt;br /&gt;End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now we also need to add our handler to the web.config so that our website knows to use it. Add the following to the httpHandlers section of your web.config:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;&amp;lt;add verb=&amp;quot;GET&amp;quot; path=&amp;quot;sitemap.xml&amp;quot; validate=&amp;quot;false&amp;quot; type=&amp;quot;TBH.SiteMapHandler, TBHBLL, Version=3.5.0.1, Culture=neutral, PublickeyToken=null&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MySubHeadings"&gt;A URL Rewrite Class &lt;/p&gt;  &lt;p&gt;This I feel is one of the less complete modules in the chapter. Originally when I attempted to create the code from this chapter I was only creating code that I found in the solution section. This meant that a couple critical pieces of this module were left out. By looking through the chapter, there was actually much more available.&lt;/p&gt;  &lt;p&gt;First we'll need to create a class for our Rewrite code. This should go in a folder called 'Module' in our BLL. Once the folder is created, add a class file and name it URLRewrite.vb. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We get our first code pieces starting on page 124 in the book. Right off, we should make sure that our class implements the IHttpModule interface, so add that to your class definition. Next, we can the code we need for the Init method. We can add that and you class should look something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public Class URLRewrite      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Implements IHttpModule       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Public Sub Init(ByVal context As System.Web.HttpApplication) _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Implements System.Web.IHttpModule.Init       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AddHandler context.BeginRequest, AddressOf BeginRequest       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160; Public Sub Dispose() Implements System.Web.IHttpModule.Dispose       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160; End Sub       &lt;br /&gt;      &lt;br /&gt;End Class&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You'll notice that while the book says we should intercept the AuthorizeRequest event that we're using the BeginRequest event. There is a difference between what we see on page 124 and what we read later on pages 135-6, but I went with the one that matched the code download, BeginRequest. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Next, skip over to page 135 and we'll start adding the rest of the module. We will create a variable to use for Regular Expressions. Add the following to your class:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private Shared wwwRegex As New Regex(&amp;quot;https?://www\.&amp;quot;, RegexOptions.IgnoreCase Or RegexOptions.Compiled)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Following along on page 136, we'll also add the BeginRequest event handler that we registered in our Init method. This is defined as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private Sub BeginRequest(ByVal sender As Object, ByVal e As EventArgs)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim app As HttpApplication = CType(sender, HttpApplication)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim Request As HttpRequest = app.Request       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim Response As HttpResponse = app.Response&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim sRequestedURL As String = Request.Url.ToString.ToLower       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim redirectURL As String = String.Empty       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim bWWW As Boolean = wwwRegex.IsMatch(sRequestedURL)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If bWWW Then redirectURL = wwwRegex.Replace(sRequestedURL, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String.Format(&amp;quot;{0}://&amp;quot;, Request.Url.Scheme))       &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160; Rewrite(app)       &lt;br /&gt;End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The Rewrite method is next, it is found on page 137 towards the bottom. Unfortunately there is a SIGNIFICANT difference between the code in the book and the code in the downloaded version. The book talks about doing a 301 redirect and looking up the information in the sitemap table, however the book doesn't seem to implement this. The downloaded code seems to to this, so I will be including that code rather than just the book's code. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt; To start, let's create a helper function for our Rewrite method. Add the following to your code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private Sub Do301Redirect(ByVal response As HttpResponse, _      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ByVal redirectURL As String)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; response.RedirectLocation = redirectURL       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; response.StatusCode = 301       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; response.End()       &lt;br /&gt;End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now let's create our Rewrite method. Add the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Private Sub Rewrite(ByVal app As HttpApplication)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If app.Context.Request.Path.ToLower.EndsWith(&amp;quot;.aspx&amp;quot;) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using lSiteMapRst As New SiteMapRepository_       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (Globals.Settings.DefaultConnectionStringName)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim lURLFile As String = _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Helpers.GetURLPath(app.Context.Request.Url.ToString)&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim lSiteMap As SiteMapInfo = lSiteMapRst.GetSiteMapInfoByURL _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (lURLFile.Replace(Globals.Settings.devSiteName, &amp;quot;&amp;quot;))       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Not IsNothing(lSiteMap) Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If lSiteMap.RealURL &amp;lt;&amp;gt; lURLFile Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HttpContext.Current.RewritePath(&amp;quot;/&amp;quot; &amp;amp; lSiteMap.RealURL, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; False)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ElseIf lSiteMap.URL &amp;lt;&amp;gt; lSiteMap.RealURL Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Do301Redirect(app.Response, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Path.Combine(Globals.Settings.SiteDomainName, _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lSiteMap.URL))       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Using       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I did make one change from the downloaded code, I removed a settings variable since all we did was get our Globals.Settings object and it wasn't that much more work to add the Globals path to the beginning of the settings object when it was called.&lt;/p&gt;  &lt;p&gt;You'll also notice that we created an error with our Helpers.GetURLPath that we haven't defined yet. We'll go define that now so that we can successfully build our application.&lt;/p&gt;  &lt;p class="MySubHeadings"&gt;Another Method for our Helpers Class&lt;/p&gt;  &lt;p&gt;I haven't found where much of the Helper class is defined in the book, so I went to the code download for this method. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt; Go over to your Helpers class and we'll add the following method:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;Public Shared Function GetURLPath(ByVal sUrl As String) As String      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim _Regex As Regex = New Regex(&amp;quot;://[^/]+/(?&amp;lt;path&amp;gt;[^?\s&amp;lt;&amp;gt;#&amp;quot;&amp;quot;]+)&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If _Regex.Matches(sUrl).Count &amp;gt; 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Return _Regex.Match(sUrl).Groups(1).ToString()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Return sUrl       &lt;br /&gt;End Function&lt;/p&gt; &lt;/blockquote&gt;  &lt;p class="MySubHeadings"&gt;Configuring the ELMAH Error Logging Add-In&lt;/p&gt;  &lt;p&gt;One of my little pet peeves is when you download something and then have to search all over the internet for specific instructions on how to install and configure it. This was the case for some information for getting ELMAH started in our project. I think I'm going to have to pull from a couple articles, as well as using the book, to get it all 100% happy. &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Starting on page 139, it talks about configuring ELMAH, so we can get some of our direction from the book, however before we do that, we'll need to get it installed. I found &lt;a href="http://www.itscodingtime.com/itscodingtime/post/Adding-ELMAH-to-your-ASPNET-Web-Site.aspx" target="_blank"&gt;a short article&lt;/a&gt; that I based my installation on, basically you:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://code.google.com/p/elmah/" target="_blank"&gt;Download ELMAH&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Extract the Files. &lt;/li&gt;    &lt;li&gt;Copy the Elmah.dll into the BIN directory of your website. &lt;/li&gt;    &lt;li&gt;Configure ELMAH in your web.config. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;We can now go to the book and do a little bit of configuration. First we need to add a Section definition to our web.config, much like we needed to do for our BeerHouseSection for configuration. Add the following to the ConfigSections element of your web.config:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;&amp;lt;sectionGroup name=&amp;quot;elmah&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;section name=&amp;quot;security&amp;quot; requirePermission=&amp;quot;false&amp;quot; type=&amp;quot;Elmah.SecuritySectionHandler, Elmah&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;section name=&amp;quot;errorLog&amp;quot; requirePermission=&amp;quot;false&amp;quot; type=&amp;quot;Elmah.ErrorLogSectionHandler, Elmah&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;section name=&amp;quot;errorMail&amp;quot; requirePermission=&amp;quot;false&amp;quot; type=&amp;quot;Elmah.ErrorMailSectionHandler, Elmah&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;section name=&amp;quot;errorFilter&amp;quot; requirePermission=&amp;quot;false&amp;quot; type=&amp;quot;Elmah.ErrorFilterSectionHandler, Elmah&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;/sectionGroup&amp;gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now we can add the configuration information into an Elmah section in our web.config. Add the following to the Configuration section in your web.config.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;&amp;lt;elmah&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;security allowRemoteAccess=&amp;quot;0&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;errorLog type=&amp;quot;Elmah.SqlErrorLog, Elmah&amp;quot; connectionStringName=&amp;quot;&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;errorFilter&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;test&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;equal binding=&amp;quot;HttpStatusCode&amp;quot; value=&amp;quot;404&amp;quot; &lt;strike&gt;value&lt;/strike&gt;Type=&amp;quot;Int32&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/test&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/errorFilter&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;errorMail from=&amp;quot;error@thebeerhouse.com&amp;quot; to=dogbert@dogbert.com subject=&amp;quot;Exception in the Beerhouse Site.&amp;quot; async=&amp;quot;true&amp;quot; smptPort=&amp;quot;25&amp;quot; smtpServer=&amp;quot;mail.thebeerhouse.com&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;/elmah&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You'll notice that I have made a correction in the 'equal' element. The book has incorrectly listed this attribute as valueType &lt;strong&gt;*Gap-Filled*&lt;/strong&gt;, the correct attribute is type. Finally for configuration we need to add handlers so that the modules will actually be used. We need to add the following to our system.web section within the HttpModules subsection:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;&amp;lt;add name=&amp;quot;ErrorLog&amp;quot; type=&amp;quot;Elmah.ErrorLogModule, Elmah&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;lt;add name=&amp;quot;ErrorMail&amp;quot; type=&amp;quot;Elmah.ErrorMailModule, Elmah&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;lt;add name=&amp;quot;ErrorFilter&amp;quot; type=&amp;quot;Elmah.ErrorFilterModule, Elmah&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;and the following into our system.web's httpHandlers section:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p class="CodeSnippet"&gt;&amp;lt;add verb=&amp;quot;POST,GET,HEAD&amp;quot; path=&amp;quot;elmah.axd&amp;quot; type=&amp;quot;Elmah.ErrorLogPageFactory, Elmah&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Finally, one last piece that I had a harder time finding, and that is setting up the database. To do this, you need to add the ELMAH table and it's 3 stored procedures (thanks &lt;a href="http://blog.ninethsense.com/elmah-integration-to-aspnet-in-simple-steps/" target="_blank"&gt;NinethSense&lt;/a&gt;). If you downloaded the ELMAH packages, there is a folder in the zip file labeled 'DB'. In this folder, you will find the script to setup your DB. I chose to use SQL server so I loaded the SQLServer.sql file into my SQL Server Management Studio and ran the script. Viola the DB is setup.&lt;/p&gt;  &lt;p class="MyHeadings"&gt;Epilogue &lt;/p&gt;  &lt;p&gt;Well, there you go, hopefully you'll find this helpful, I certainly would have.&lt;/p&gt;  &lt;p&gt;Having finished with this particular chapter, I have started reading further (albeit in pieces here and there) in chapter 5 and I think that actually everything will be much easier to understand in these chapters. If they aren't, then look forward to another post in the series...?&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx&amp;amp;;subject=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+2" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx&amp;amp;;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+2" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx&amp;amp;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+2" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx&amp;amp;;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+2" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx&amp;amp;;title=Filling+in+the+Gaps+-+Problem+Design+Solution+3.5+-+Part+2&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/net_discoveries/archive/2010/03/19/Filling-in-the-Gaps-_2D00_-Problem-Design-Solution-3.5-_2D00_-Part-2.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=61586" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/net_discoveries/archive/tags/Asp.net/default.aspx">Asp.net</category></item><item><title>Kentico Announces the Most Valuable Professional (MVP) Award Program</title><link>http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx</link><pubDate>Tue, 16 Mar 2010 13:54:20 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:61142</guid><dc:creator>ssmith</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;Nashua, New Hampshire, USA, March 16, 2010 – &lt;a name="OLE_LINK8"&gt;&lt;/a&gt;&lt;a name="OLE_LINK7"&gt;Kentico Software (http://www.kentico.com), the Web content management system vendor,&lt;/a&gt; announces the Most Valuable Professional (MVP) Award, which is a one year industry recognition given to individuals based on their community participation and evangelistic activities in the CMS and .NET communities. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;“Kentico MVP’s are passionate about the tools and technologies of Kentico, .Net and the CMS community worldwide,“ says Thom Robbins, Product Evangelist at Kentico.&lt;/p&gt;  &lt;p&gt;The very first person to be honored with the Kentico Most Valuable (MVP) Award is Richard Pendergast for his exceptional contributions to the Kentico community, represented especially by the Kentico Developer magazine he founded and manages. &lt;/p&gt;  &lt;p&gt;“I feel very honored,“ says Richard Pendergast, Kentico Developer Magazine Director and founder. “This award means a great deal to me. Respecting and admiring so many of the Kentico partners I work with, means that to be singled out from amongst such a talented group feels like a really big deal. I look forward to taking advantage of this opportunity and working even more closely with the wider Kentico community.”&lt;/p&gt;  &lt;p&gt;Kentico Developer Magazine is an independent monthly periodical devoted entirely to web site development with Kentico CMS and to the thriving community of Kentico CMS professionals. Each issue features news, tips and tricks and best practices for the developers using Kentico CMS to deliver web sites following the latest industry trends. The online version of the magazine is available for free; the printed version can be subscribed. More information about the magazine can be found at: &lt;a href="http://www.kenticodeveloper.com/"&gt;http://www.kenticodeveloper.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Kentico MVPs are selected from hundreds of Kentico CMS experts located within any of the 83 countries where Kentico CMS is being used. To receive the Kentico MVP Award status, individuals can submit their application at Kentico web site. These submissions will then be reviewed by a board of Kentico executives. &lt;/p&gt;  &lt;p&gt;The MVP program offers its members a number of benefits, such as a free license, participation at selected industry events at Kentico`s expense, exclusive access to beta versions of Kentico CMS, etc. Kentico MPV status is valid for one year, after which the status is reviewed &lt;/p&gt;  &lt;p&gt;More information about the MVP Award can be found at:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devnet.kentico.com/Blogs/Thomas-Robbins/January-2010/Announcing-the-Kentico-MVP-Award.aspx"&gt;http://devnet.kentico.com/Blogs/Thomas-Robbins/January-2010/Announcing-the-Kentico-MVP-Award.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;About Kentico CMS&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Kentico CMS is an affordable Web content management solution providing a complete set of features for building Web sites, community sites, intranets and on-line stores on the Microsoft ASP.NET platform. It supports WYSIWYG editing, workflows, multiple languages, full-text search, SEO, on-line forms, image galleries, forums, groups, blogs, polls, media libraries and is shipped with 200+ configurable Web parts. It’s currently used by more than 4,000 Web sites in 83 countries. The clients include Microsoft, McDonald's, Vodafone, O&lt;sub&gt;2&lt;/sub&gt;, Orange, Brussels Airlines, Audi, Mazda, Ford, Subaru, Samsung, Gibson, Bayer, ESPN, Guinness, DKNY, Abbott Labs, Medibank, Ireland.ie and others. Kentico CMS is available at &lt;a href="http://www.kentico.com"&gt;http://www.kentico.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;About Kentico Software&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Kentico Software (&lt;a href="http://www.kentico.com"&gt;www.kentico.com&lt;/a&gt;) helps clients create professional Web sites, online stores, community sites and intranets using Kentico CMS for ASP.NET. It's committed to deliver a full-featured, enterprise-class, stable and scalable Web Content Management solution on the Microsoft .NET platform. Founded in 2004, Kentico is headquartered in the Czech Republic and has a U.S. office in Nashua, NH. Since its inception, Kentico has continued to rapidly expand the Kentico CMS user base worldwide. Kentico Software is a Microsoft Gold Certified Partner. In 2009, Kentico was named a Deloitte Technology FAST 50 Rising Star, being ranked as one of the fastest growing companies in Central Europe.&lt;/p&gt;  &lt;p&gt;###&lt;/p&gt;  &lt;p&gt;All product and company names herein may be trademarks of their respective owners. &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx&amp;amp;;subject=Kentico+Announces+the+Most+Valuable+Professional+(MVP)+Award+Program" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx&amp;amp;;title=Kentico+Announces+the+Most+Valuable+Professional+(MVP)+Award+Program" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx&amp;amp;title=Kentico+Announces+the+Most+Valuable+Professional+(MVP)+Award+Program" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx&amp;amp;;title=Kentico+Announces+the+Most+Valuable+Professional+(MVP)+Award+Program" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx&amp;amp;;title=Kentico+Announces+the+Most+Valuable+Professional+(MVP)+Award+Program&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/16/Kentico-Announces-the-Most-Valuable-Professional-_2800_MVP_2900_-Award-Program.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=61142" width="1" height="1"&gt;</description></item><item><title>Nevron Gauge for SharePoint Now Available</title><link>http://aspadvice.com/blogs/nevron_news/archive/2010/03/15/Nevron-Gauge-for-SharePoint.aspx</link><pubDate>Mon, 15 Mar 2010 15:52:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:61002</guid><dc:creator>nevron</dc:creator><slash:comments>1</slash:comments><description>Nevron Gauge for SharePoint is an advanced web part, which delivers a complete set of radial and linear gauges, numeric displays and state indicators which are driven by pivot data aggregation. This allows the creation of complex gauges, KPIs, Scorecards and Dashboards, that are tightly integrated with your data, to be done visually and directly in SharePoint environment. Nevron Gauge for SharePoint includes: Multiple Gauge Areas and Gauge Combinations Advanced Gauge Axis Model and Scales Configuration...(&lt;a href="http://aspadvice.com/blogs/nevron_news/archive/2010/03/15/Nevron-Gauge-for-SharePoint.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=61002" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/digital+dashboards/default.aspx">digital dashboards</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/custom+dashboard/default.aspx">custom dashboard</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/dashboard+solutions/default.aspx">dashboard solutions</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/SharePoint+Add+On/default.aspx">SharePoint Add On</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/sharepoint+dashboard/default.aspx">sharepoint dashboard</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/data+visualization+for+sharepoint/default.aspx">data visualization for sharepoint</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/gauges+for+sharepoint/default.aspx">gauges for sharepoint</category></item><item><title>Nevron SharePoint Vision 2010 Vol.1 Now Available - advanced pivot Charts and Gauges for SharePoint</title><link>http://aspadvice.com/blogs/nevron_news/archive/2010/03/11/Nevron-SharePoint-Vision-2010-Vol.1-Now-Available-_2D00_-advanced-pivot-Charts-and-Gauges-for-SharePoint.aspx</link><pubDate>Thu, 11 Mar 2010 10:50:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60686</guid><dc:creator>nevron</dc:creator><slash:comments>1</slash:comments><description>The major release is now available for download and includes Nevron Chart and Gauge web parts for WSS and MOSS 2007. Analyze your data by adding interactive, AJAX-enabled pivot charts and gauges to your SharePoint portals, all without using Visual Studio. Nevron Gauge for SharePoint delivers a rich set of Linear and Radial Gauges, Numeric Displays and State Indicators to your SharePoint applications. The web part uses the powerful Nevron Pivot data aggregation engine, which combined with the numerous...(&lt;a href="http://aspadvice.com/blogs/nevron_news/archive/2010/03/11/Nevron-SharePoint-Vision-2010-Vol.1-Now-Available-_2D00_-advanced-pivot-Charts-and-Gauges-for-SharePoint.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60686" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/chart/default.aspx">chart</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/SharePoint+Add+On/default.aspx">SharePoint Add On</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/sharepoint+dashboard/default.aspx">sharepoint dashboard</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/sharepoint+chart/default.aspx">sharepoint chart</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/Chart+for+SharePoint/default.aspx">Chart for SharePoint</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/sharepoint+graph/default.aspx">sharepoint graph</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/data+visualization+for+sharepoint/default.aspx">data visualization for sharepoint</category><category domain="http://aspadvice.com/blogs/nevron_news/archive/tags/gauges+for+sharepoint/default.aspx">gauges for sharepoint</category></item><item><title>jQuery: Novice to Ninja--New from SitePoint</title><link>http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx</link><pubDate>Wed, 10 Mar 2010 18:57:23 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60669</guid><dc:creator>ssmith</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;em&gt;Rich, Fast, Versatile—JavaScript the Way It Should Be!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://post.oreilly.com/rd/9z1zus750luff3c082vi166lcancu5ks23v22q6v4lo"&gt;&lt;/a&gt;&lt;a href="http://post.oreilly.com/rd/9z1zus750luff3c082vi166lcancu5ks23v22q6v4lo"&gt;&lt;img height="232" src="http://covers.oreilly.com/images/9780980576856/cat.gif" width="180" align="right" border="0" /&gt;&lt;/a&gt;&lt;a href="http://post.oreilly.com/rd/9z1zus750luff3c082vi166lcancu5ks23v22q6v4lo"&gt;&lt;/a&gt;&lt;b&gt;Sebastopol, CA&lt;/b&gt;—What do WordPress, Digg and Google have in common?&lt;/p&gt;  &lt;p&gt;They all rely on the jQuery JavaScript library to speed up their website development and power interactive features on their websites.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://post.oreilly.com/rd/9z1zg966gc19s3ghvog52lhi85me5qahm079t5oesc0"&gt;jQuery: Novice to Ninja&lt;/a&gt;&lt;/strong&gt; (SitePoint, $39.95 USD) is a groundbreaking new book that teaches Developers how to unleash the amazing power that jQuery offers.&lt;/p&gt;  &lt;p&gt;Readers of the book will learn how to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;instantly transform page elements with cross-browser compatible effects &lt;/li&gt;    &lt;li&gt;speed up page load times by using jQuery hosted on Google's content delivery network &lt;/li&gt;    &lt;li&gt;create clever animations that attract visitor's attention &lt;/li&gt;    &lt;li&gt;create lightboxes to capture visitors email addresses &lt;/li&gt;    &lt;li&gt;build slideshows and iPhoto-like widgets &lt;/li&gt;    &lt;li&gt;create expandable/collapsible navigation menus &lt;/li&gt;    &lt;li&gt;validate forms, improve form usability and offer auto-completion&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;For review copies or more information please email &lt;a href="mailto:sitepointpr@oreilly.com"&gt;sitepointpr@oreilly.com&lt;/a&gt;. Please include your delivery address and contact information.       &lt;br /&gt;For other inquires, such as excerpt or interview requests, please contact &lt;a href="mailto:Shayne.Tilley@sitepoint.com"&gt;Shayne.Tilley@sitepoint.com&lt;/a&gt;. &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;About the Authors&lt;/strong&gt;    &lt;br /&gt;Sporting a Masters in Information Technology and a lifetime of experience on the Web of Hard Knocks, &lt;a href="http://post.oreilly.com/rd/9z1z9rtrgtmgf32k3pq91gf7o505lj4num6ctvmg8mg"&gt;Earle Castledine&lt;/a&gt; (aka Mr. Speaker) is a world-renowned expert on the jQuery framework. When not conducting countless web-based experiments, he's sharing his expertise to audiences all over the globe.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://post.oreilly.com/rd/9z1zppei7h882cceabsokoqprbdklts7n99uc68mkp8"&gt;Craig Sharkie&lt;/a&gt; started his jQuery journey as a fine arts graduate turned programmer, working with some of the Web's biggest names, including AOL, Microsoft, and Yahoo. Craig discovered JavaScript in 1995 and was an evangelist for the &amp;quot;good parts&amp;quot; before Douglas Crockford coined the term. He now brings that extensive experience to jQuery.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Additional Resources&lt;/strong&gt;    &lt;br /&gt;For more information about this book, as well as four free sample chapters consisting of 150 pages of content, see: &lt;a href="http://post.oreilly.com/rd/9z1zinms9p7i8abgd5pqahpiif76j4p772j2qj4i5h0"&gt;http://sitepoint.com/books/jquery1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://post.oreilly.com/rd/9z1zveibdc3nlan504e6vapksuqobet1r1ktm6s55go"&gt;&lt;/a&gt;&lt;a href="http://post.oreilly.com/rd/9z1zveibdc3nlan504e6vapksuqobet1r1ktm6s55go"&gt;&lt;img height="122" alt="jQuery: Novice to Ninja" hspace="7" src="http://covers.oreilly.com/images/9780980576856/cat.gif" width="95" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://post.oreilly.com/rd/9z1zveibdc3nlan504e6vapksuqobet1r1ktm6s55go"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://post.oreilly.com/rd/9z1z162q6c3qcjvv9jrcv7jd8gjktr0mpkk2b14d0m0"&gt;&lt;b&gt;jQuery: Novice to Ninja&lt;/b&gt;&lt;/a&gt;    &lt;br /&gt;Publisher: SitePoint    &lt;br /&gt;Earl Castledine    &lt;br /&gt;ISBN: 9780980576856, 300 pages,    &lt;br /&gt;&lt;b&gt;Book Price: $39.95 USD&lt;/b&gt;    &lt;br /&gt;&lt;a href="mailto:order@oreilly.com"&gt;order@oreilly.com&lt;/a&gt;    &lt;br /&gt;1-800-998-9938    &lt;br /&gt;1-707-827-7000&lt;/p&gt;  &lt;p&gt;&lt;b&gt;About SitePoint&lt;/b&gt;    &lt;br /&gt;SitePoint titles are distributed to bookstores internationally by O'Reilly Media.    &lt;br /&gt;&lt;a href="http://post.oreilly.com/rd/9z1zpgjslnfejfoj2gmamhrfbcl78t3cc5nrf4giu58"&gt;SitePoint&lt;/a&gt; specializes in publishing fun, practical, and easy-to-understand content for web professionals. Its popular online magazine, blogs, newsletters, and print books teach best practices to web developers and designers worldwide. &lt;/p&gt;  &lt;p&gt;SitePoint also runs the #1 &lt;a href="http://post.oreilly.com/rd/9z1zmr0qsrgu1kujv2q7upmkl175vt60ikruq812fs0"&gt;Marketplace&lt;/a&gt; on the Web for buying and selling web sites, blogs, and forums.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;About O'Reilly&lt;/b&gt;    &lt;br /&gt;O'Reilly Media spreads the knowledge of innovators through its books, online services, magazines, and conferences. Since 1978, O'Reilly Media has been a chronicler and catalyst of cutting-edge development, homing in on the technology trends that really matter and spurring their adoption by amplifying &amp;quot;faint signals&amp;quot; from the alpha geeks who are creating the future. An active participant in the technology community, the company has a long history of advocacy, meme-making, and evangelism.&lt;/p&gt;  &lt;p&gt;# # #&lt;/p&gt;  &lt;p&gt;O'Reilly is a registered trademark of O'Reilly Media, Inc. All other trademarks are the property of their respective owners.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx&amp;amp;;subject=jQuery%3a+Novice+to+Ninja--New+from+SitePoint" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx&amp;amp;;title=jQuery%3a+Novice+to+Ninja--New+from+SitePoint" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx&amp;amp;title=jQuery%3a+Novice+to+Ninja--New+from+SitePoint" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx&amp;amp;;title=jQuery%3a+Novice+to+Ninja--New+from+SitePoint" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx&amp;amp;;title=jQuery%3a+Novice+to+Ninja--New+from+SitePoint&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/10/jQuery_3A00_-Novice-to-Ninja_2D002D00_New-from-SitePoint.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60669" width="1" height="1"&gt;</description></item><item><title>SP1 for TX Text Control RapidSpell .NET 15.1 released</title><link>http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx</link><pubDate>Thu, 04 Mar 2010 09:59:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60339</guid><dc:creator>Christopher Krause</dc:creator><slash:comments>1</slash:comments><description>Today, Service Pack 1 for TX Text Control RapidSpell .NET 15.1 was 
released.&lt;br /&gt;&lt;br /&gt;Please take a look at the updated known issues list at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.textcontrol.com/en_US/support/issues/rapidspelldotnet/1510/"&gt;Known
 Issues and Fixes in TX Text Control RapidSpell .NET 15.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You
 can download the service pack at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.textcontrol.com/en_US/downloads/sps/"&gt;Service-Packs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As
 ever, our support team is waiting to answer your questions. Full 
contact details at: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.textcontrol.com/en_US/support/"&gt;Support&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;About
 &lt;b&gt;&lt;a href="http://www.textcontrol.com/"&gt;TX Text Control&lt;/a&gt;&lt;/b&gt;:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.textcontrol.com/"&gt;TX Text Control&lt;/a&gt;&lt;/b&gt; was 
originally released in 1991, since then more than 40,000 copies have 
been sold. Starting off as a single, small DLL, &lt;b&gt;&lt;a href="http://www.textcontrol.com/"&gt;TX Text Control&lt;/a&gt;&lt;/b&gt; has made its 
way through 16-bit DLL and VBX versions to today&amp;lsquo;s Enterprise edition 
with its .NET and ActiveX components. The recent addition to the family,
 &lt;b&gt;&lt;a href="http://www.textcontrol.com/products/dotnet_server/"&gt;TX Text
 Control .NET Server&lt;/a&gt;&lt;/b&gt;, offers all of &lt;b&gt;&lt;a href="http://www.textcontrol.com/"&gt;TX Text Control&lt;/a&gt;&lt;/b&gt; advanced word
 processing functionality in an easy-to-use server-side .NET component. 
Customers benefit from these years of experience, large user base, and 
at the same time, appreciate developing with a mature, reliable product.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.textcontrol.com/contact/"&gt;Contact Informations:&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:support@textcontrol.com"&gt;support@textcontrol.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;North
 &amp;amp; South America:&lt;/b&gt;&lt;br /&gt;Phone: +1 704-370-0110&lt;br /&gt;Phone: +1 
877-462-4772 (toll free)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Europe:&lt;/b&gt;&lt;br /&gt;Phone: +49 421 335 910&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Asia
 Pacific:&lt;/b&gt;&lt;br /&gt;Phone: +886 2-2797-8508

       
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx&amp;amp;;subject=SP1+for+TX+Text+Control+RapidSpell+.NET+15.1+released" target="_blank" title = "Post http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx&amp;amp;;title=SP1+for+TX+Text+Control+RapidSpell+.NET+15.1+released" target="_blank" title = "Post http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx&amp;amp;title=SP1+for+TX+Text+Control+RapidSpell+.NET+15.1+released" target="_blank" title = "Post http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx&amp;amp;;title=SP1+for+TX+Text+Control+RapidSpell+.NET+15.1+released" target="_blank" title = "Post http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx&amp;amp;;title=SP1+for+TX+Text+Control+RapidSpell+.NET+15.1+released&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/tx_text_control/archive/2010/03/04/SP1-for-TX-Text-Control-RapidSpell-.NET-15.1-released.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60339" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/tx_text_control/archive/tags/TX+Text+Control/default.aspx">TX Text Control</category><category domain="http://aspadvice.com/blogs/tx_text_control/archive/tags/.NET/default.aspx">.NET</category><category domain="http://aspadvice.com/blogs/tx_text_control/archive/tags/RapidSpell/default.aspx">RapidSpell</category><category domain="http://aspadvice.com/blogs/tx_text_control/archive/tags/SP1/default.aspx">SP1</category><category domain="http://aspadvice.com/blogs/tx_text_control/archive/tags/15.1/default.aspx">15.1</category></item><item><title>Sharepoint Hosting :: Tricks and Traps with Site Columns and Content Types</title><link>http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx</link><pubDate>Thu, 04 Mar 2010 07:00:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60336</guid><dc:creator>asphostcentral</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;One of the main selling points of SharePoint is the ability to push content management down to the End User&lt;/span&gt;&lt;/b&gt;&lt;span&gt; instead of having a dedicated IT staff or Information Management Team manages sites and content. From my perspective, this is also one of its biggest downfalls.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;The single greatest problem of a beginning End User is not having an understanding of how to structure a library or list&lt;/span&gt;&lt;/b&gt;&lt;span&gt; so that it can be part of a centrally managed site structure, built for reusability with document templates attached. Forget about site design. Forget about user interface. They are told to start by adding columns to a library/list to make the information searchable and manageable through metadata, when most End Users do not have a clear understanding of what that is (metadata) much less how to&amp;nbsp; structure it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;Allowing contributors of content the power to control the Information Architecture of a site&lt;/span&gt;&lt;/b&gt;&lt;span&gt; or list/library assumes they have the understanding and knowledge of how to structure information so that it is robust, reusable, modular and accessible to all users of that content. This places too much burden on the End User, who is usually an untrained content contributor who just wants to contribute and consume information.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;Understanding Content Types is essential when managing a quickly growing site&lt;/span&gt;&lt;/b&gt;&lt;span&gt; through an expandable, controllable infrastructure. More than in other installments of SharePoint 101: Tricks and Traps, you must be able to put Site Columns and Content Types into your own context to get an understanding of how powerful they are. With each problem statement in this installment, try to rephrase the problem so that it relates directly to a situation in your SharePoint environment.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;This section of Tricks and Traps starts with an overview of Site Columns and how they relate to Content Types&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;.&amp;nbsp; From the overview, we will move into common scenarios using Site Columns to create Content Types. We will end with a series of links to Microsoft&amp;rsquo;s Knowledge Base, focusing on their in-depth descriptions and examples of Content Types.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;The following article summarizes one of the features in Sharepoint Services called Site Columns. &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span style="color:purple;"&gt;&lt;font size="3" face="Calibri"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt;, as the premier ASP.NET and Windows Hosting provider, proudly presents this article to anyone and we believe it will help many ASP.NET communities; especially to those who are using Sharepoint Service. In case you are looking for Sharepoint Hosting, you can always consider &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;font color="#800080"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt; and you can start from our lowest Standard Plan &lt;b&gt;@$4.99/month&lt;/b&gt; to host your Sharepoint site.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;&lt;font face="Calibri"&gt;Introduction to Site Columns&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Newly created libraries and lists consist of default columns. These columns are the document or list properties/attributes that are set by default when a list or library is created. You can think of metadata as the aggregate list of these properties.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Default Document Columns&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;There are 17 default properties (attributes) associated with an item in a document library&lt;/span&gt;&lt;/b&gt;&lt;span&gt;. To see the default properties, choose &lt;i&gt;View: Modify this view&lt;/i&gt; from the View menu in any newly created document library. You will see the following list: &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- Type (icon linked to document) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Name (linked to document with edit menu) &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- Modified (date) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Modified By (person) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Checked Out To (person) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Check In Comment (text) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Content Type &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Copy Source (link) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Created (date) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Created By (person) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Edit (link to edit item) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;File Size (kb) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;ID (unique identifier) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Name (for use in forms) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Name (linked to document) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Title (text) &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Version (number) &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;These properties are the default metadata&lt;/span&gt;&lt;/b&gt;&lt;span&gt; for any document uploaded, created or published to the library. Stop for a second and think about that&amp;hellip; every document knows these 17 things about itself. This is the foundation of the metadata structure for any document within SharePoint. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;br /&gt;Core Document Columns &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;&lt;br /&gt;There are additional attributes/properties that can be carried by documents&lt;/span&gt;&lt;/b&gt;&lt;span&gt; within a SharePoint library. These properties are not available by default, but can be added to the metadata structure of the library and are called &amp;ldquo;Core Document Columns&amp;rdquo;. They are listed in the Site Column Gallery for site and site collection administrators. The twenty Core Document Columns are a small subset of all the site columns available in a default SharePoint installation. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The Core Document Columns can be found under &lt;i&gt;Site Actions -&amp;gt; Site Settings, Galleries: Site columns&lt;/i&gt;: &lt;br /&gt;&lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Author &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Category &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Comments &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Contributor &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Coverage &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Date &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Date Modified &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Date Picture Taken &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Format &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Keywords &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Last Printed &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Publisher &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Relation &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Resource Identifier &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Resource Type &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Revision &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Rights Management &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Source &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Subject &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Version &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Custom Site Columns &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;SharePoint offers the ability to create customized site columns&lt;/span&gt;&lt;/b&gt;&lt;span&gt; when the default document library columns and the Core Document Columns are not what is needed to identify a document. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;As an example,&amp;nbsp;if you create&amp;nbsp;a Technical Publications &amp;ldquo;Specifications Library&amp;rdquo; there might be a need to associate a specific product with every document. There is no such thing as a default &amp;ldquo;Product&amp;rdquo; column in SharePoint. By creating the Product site column and making it mandatory (required) in the Specifications library, when a document is inserted into the library, the document will know what project it is related to. &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;&lt;font face="Calibri"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Introduction to Content Types&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Individual site columns can be made much more useful when they are grouped together to create an entire metadata structure. This grouping of site columns is called a Content Type. &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Overview of Content Types &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;A Content Type is a reusable grouping of site columns that can be utilized by a list or library. This makes it possible to maintain a consistent metadata structure for all documents or items of that type in a Site Collection. &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;A Content Type can carry a workflow,&amp;nbsp; an Information Management Policy and a document template&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; along with the site columns. Whenever the Content Type is associated with a library or list, all of the functionality built into the customization of that Content Type will be available to that library or list.&lt;br /&gt;&lt;br /&gt;Using an example from the EndUserSharePoint.com Site Collection Administration Workshop, let&amp;rsquo;s take a look at a customized Content Type.The Site Collection Administrator needs a method for accepting new site creation requests, new library requests and requests for help with site planning. All three of these requests have five things in common: &lt;br /&gt;&lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Requester Name &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Requester Email &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Time Frame &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Priority of this Request &lt;br /&gt;- &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Comments &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;A Content Type can be created to manage all of these columns as a single group&lt;/span&gt;&lt;/b&gt;&lt;span&gt; of metadata that can be applied to any list that needs it. In our case, all request lists need to have this customized Request Content Type associated with it. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;Using a single Content Type in multiple lists allows for consistency in the data structure&lt;/span&gt;&lt;/b&gt;&lt;span&gt;. The consistency adds to the ability to find those list items through a search across the metadata. &amp;ldquo;Find me all list items that have a Priority of &amp;lsquo;High&amp;rsquo; that were requested by &amp;lsquo;Mark Miller or Bob Mixon&amp;rsquo;&amp;rdquo;. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;An added benefit of using a Content Type in multiple locations is maintainability&lt;/span&gt;&lt;/b&gt;&lt;span&gt;. Any changes to the parent Content Type can be passed down to any list that is using that Content Type. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;One of the things missing from the Request Content Type described above is the &amp;lsquo;Status&amp;rsquo; of the request (Open, In progress, Completed, Denied). Adding a Status column to the Request Content Type will now create that column in any list that is utilizing our customized Content Type. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;&lt;font face="Calibri"&gt;Summary&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;Site columns and Content Types are the foundation of Information Architecture planning in SharePoint&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;. Too much duplication of effort is typically done because of lack of planning before starting to build the infrastructure of a Site Collection. &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Utilizing site columns and Content Types takes additional effort in the upfront time spent when setting up a SharePoint Site Collection, but the investment of time at the beginning will pay huge dividends during the management and maintenance phase of your SharePoint implementation. &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx&amp;amp;;subject=Sharepoint+Hosting+%3a%3a+Tricks+and+Traps+with+Site+Columns+and+Content+Types" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx&amp;amp;;title=Sharepoint+Hosting+%3a%3a+Tricks+and+Traps+with+Site+Columns+and+Content+Types" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx&amp;amp;title=Sharepoint+Hosting+%3a%3a+Tricks+and+Traps+with+Site+Columns+and+Content+Types" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx&amp;amp;;title=Sharepoint+Hosting+%3a%3a+Tricks+and+Traps+with+Site+Columns+and+Content+Types" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx&amp;amp;;title=Sharepoint+Hosting+%3a%3a+Tricks+and+Traps+with+Site+Columns+and+Content+Types&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/04/Sharepoint-Hosting-_3A003A00_-Tricks-and-Traps-with-Site-Columns-and-Content-Types.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60336" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ASPHostCentral/default.aspx">ASPHostCentral</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral.com/default.aspx">asphostcentral.com</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/sharepoint+3+hosting/default.aspx">sharepoint 3 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/wss+3+hosting/default.aspx">wss 3 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/sharepoint+hosting/default.aspx">sharepoint hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/wss+hosting/default.aspx">wss hosting</category></item><item><title>WCF RIA Service Hosting :: WCF RIA Service Configuration in a Shared Hosting/Server</title><link>http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx</link><pubDate>Wed, 03 Mar 2010 02:51:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60298</guid><dc:creator>asphostcentral</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;The following article summarises all the possible problems that may arise when deploying a WCF RIA Service application to a shared host. &lt;/span&gt;&lt;span&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span&gt;&lt;font color="#800080"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, as the premier ASP.NET and Windows Hosting provider, proudly presents this article to anyone and we believe it will help many ASP.NET communities; especially to those who are using WCF RIA Service. In case you are looking for WCF RIA Service Hosting, you can always consider &lt;strong&gt;&lt;a href="http://www.asphostcentral.com" title="WCF RIA Service Hosting"&gt;ASPHostCentral.com&lt;/a&gt;&lt;/strong&gt; and you can start from our lowest Standard Plan &lt;b&gt;@$4.99/month&lt;/b&gt; to host your WCF-service site.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color:#333333;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&lt;font size="3"&gt;Why :&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; RIA framework dynamically creates WCF service (Domain services) and add endpoints to the service. It first checks if endpoint does not exist then create it, and it checks for 3 endpoints (http, SOAP and binary). After creating end points it adds authentication schema to end points. It picks IIS authentication schemas and tries to apply on end points and failed to apply.&lt;br /&gt;&lt;br /&gt;If we could create desired end points in web.config RIA framework will not create or do anything with endpoints and it works successfully.&lt;br /&gt;&lt;br /&gt;You just need to follow the simple steps as mentioned on the followings: &lt;br /&gt;&lt;br /&gt;1. Add following code to you web.config to solve issue &amp;ldquo;&lt;b&gt;&lt;i&gt;This collection already contains an address with scheme http..&lt;/i&gt;&lt;/b&gt;&amp;rdquo;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;em&gt;&lt;b&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;serviceHostingEnvironment aspNetCompatibilityEnabled=&amp;quot;true&amp;quot;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;/font&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;font size="3"&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;baseAddressPrefixFilters&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;add prefix=&amp;quot;http://www.yoursite.com&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/baseAddressPrefixFilters&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/serviceHostingEnvironment&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/font&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="3" face="Calibri"&gt;Note: Your service can be only accessed by URL mentioned in above settings. As configured above you can&amp;rsquo;t access your service via &lt;/font&gt;&lt;a href="http://yoursite.com/"&gt;&lt;font size="3" face="Calibri"&gt;http://yoursite.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;. You could also use factory code to host WCF (see below) to resolve this error however alone with that you need to create svc files for each domain service.&lt;br /&gt;&lt;br /&gt;2.Add AspNetCompatibilityRequirementsMode attribute to your RIA Domain services classes&lt;br /&gt;Eg .Attributes added to AuthenticationService class under services folder&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;b&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&lt;font size="3"&gt;public class AuthenticationService : AuthenticationBase&amp;lt;User&amp;gt; { }&lt;/font&gt;&lt;/span&gt;&lt;/em&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;RIA framework dynamically apply these attributes after creating end points. Since we are now bypassing endpoint creation, we need to manually apply these attributes.&lt;br /&gt;&lt;br /&gt;3. For each RIA domain service add following to you configuration file.&lt;br /&gt;E.g. Is shown for AuthenticationService and UserRegistrationService&lt;br /&gt;Where SparkExams is my custom namespace.&lt;br /&gt;&lt;em&gt;&lt;b&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;services&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;font size="3"&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;service name=&amp;quot;SparkExams.Web.AuthenticationService&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;behaviorConfiguration=&amp;quot;RIAServiceBehavior&amp;quot;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;endpoint address=&amp;quot;&amp;quot; binding=&amp;quot;wsHttpBinding&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;contract=&amp;quot;SparkExams.Web.AuthenticationService&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;endpoint address=&amp;quot;/soap&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;binding=&amp;quot;basicHttpBinding&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;contract=&amp;quot;SparkExams.Web.AuthenticationService&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;endpoint address=&amp;quot;/binary&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;binding=&amp;quot;customBinding&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;bindingConfiguration=&amp;quot;BinaryHttpBinding&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;contract=&amp;quot;SparkExams.Web.AuthenticationService&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;service name=&amp;quot;SparkExams.Web.UserRegistrationService&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;behaviorConfiguration=&amp;quot;RIAServiceBehavior&amp;quot;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;endpoint address=&amp;quot;&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;binding=&amp;quot;wsHttpBinding&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;contract=&amp;quot;SparkExams.Web.UserRegistrationService&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;endpoint address=&amp;quot;/soap&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;binding=&amp;quot;basicHttpBinding&amp;quot; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;contract=&amp;quot;SparkExams.Web.UserRegistrationService&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;endpoint address=&amp;quot;/binary&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;binding=&amp;quot;customBinding&amp;quot; bindingConfiguration=&amp;quot;BinaryHttpBinding&amp;quot;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;contract=&amp;quot;SparkExams.Web.UserRegistrationService&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/font&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;Please note that RIA adds 3 endpoints and if any of these endpoints are missing from web.config it will throw &amp;quot;&lt;b&gt;&lt;i&gt;IIS specified authentication schemes &amp;#39;Basic, Anonymous&amp;#39;...&lt;/i&gt;&lt;/b&gt;&amp;quot; error.&lt;br /&gt;&lt;br /&gt;Add following behaviours and bindings to your web.config&lt;br /&gt;&lt;em&gt;&lt;b&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;behaviors&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;font size="3"&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;serviceBehaviors&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;behavior name=&amp;quot;RIAServiceBehavior&amp;quot;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;serviceMetadata httpGetEnabled=&amp;quot;true&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;serviceDebug includeExceptionDetailInFaults=&amp;quot;false&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/behavior&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/serviceBehaviors&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/behaviors&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;bindings&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;customBinding&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;binding name=&amp;quot;BinaryHttpBinding&amp;quot;&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;binaryMessageEncoding /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;httpTransport /&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/binding&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/customBinding&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&amp;lt;/bindings&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/font&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Test you WCF end points using WCF client test tool (Test client for Windows Communication Foundation services). WcfTestClient.exe : Go to VS 2008 Console and type WcfTestClient.exe.&lt;br /&gt;&lt;br /&gt;Note that there is no need to host you service,or change IIS settings by ISP.&lt;br /&gt;&lt;br /&gt;-----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;Read further if you want to know how this configuration has been discovered... &lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font face="Calibri"&gt;1. Have Used Red Gate&amp;#39;s .NET Reflector to examine RIA assemblies.&lt;br /&gt;2. Plugin my custom DomainServiceHost factory to host service.&lt;br /&gt;3. Set debug points on overridable methods &amp;quot;ApplyConfigutation()&amp;quot; in CustomHost&lt;br /&gt;Please find code for class used to injected service host factory at the end of this post.&lt;br /&gt;4. Check where the code was failing and what RIA has configured before failing.Found that it have configured 3 endpoints for each service. Noticed the minimal configuration and rectified other errors one by one.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#333333;line-height:115%;font-family:'Courier New';"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Ria.Services;&lt;br /&gt;using System.ServiceModel;&lt;br /&gt;using System.ServiceModel.Activation;&lt;br /&gt;using System.ServiceModel.Description;&lt;br /&gt;using System.ServiceModel.Channels;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Web.DomainServices;&lt;br /&gt;using System.Net;&lt;br /&gt;namespace System.Web.Ria {&lt;br /&gt;public class DomainServiceHostFactoryEx : DomainServiceHostFactory&lt;br /&gt;{&lt;br /&gt;protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)&lt;br /&gt;{&lt;br /&gt;Uri baseAddress=null;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;baseAddress = baseAddresses[0];&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;baseAddress = new Uri(&amp;quot;http://localhost:52878&amp;quot;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;CustomHost customServiceHost =&lt;br /&gt;new CustomHost(serviceType, baseAddress);&lt;br /&gt;return customServiceHost;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class CustomHost : DomainServiceHost&lt;br /&gt;{&lt;br /&gt;DomainServiceDescription _domainServiceDescription;&lt;br /&gt;ServiceDescription _sdecreption;&lt;br /&gt;ContractDescription _contract;&lt;br /&gt;public CustomHost(Type serviceType, params Uri[] baseAddresses)&lt;br /&gt;: base(serviceType, baseAddresses)&lt;br /&gt;{&lt;br /&gt;this._domainServiceDescription = DomainServiceDescription.GetDescription(serviceType);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;protected override ServiceDescription CreateDescription(out IDictionary&amp;lt;string, ContractDescription&amp;gt; implementedContracts)&lt;br /&gt;{&lt;br /&gt;ServiceDescription d = base.CreateDescription(out implementedContracts);&lt;br /&gt;//_contract = implementedContracts[0];&lt;br /&gt;_sdecreption = d;&lt;br /&gt;return d;&lt;br /&gt;}&lt;br /&gt;protected override void ApplyConfiguration()&lt;br /&gt;{&lt;br /&gt;//base.LoadConfigurationSection(new System.ServiceModel.Configuration.ServiceElement(_sdecreption.ConfigurationName));&lt;br /&gt;// try&lt;br /&gt;//{&lt;br /&gt;string error = &amp;quot;&amp;quot;;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;base.ApplyConfiguration();&lt;br /&gt;}&lt;br /&gt;catch (Exception applyconfigerror) { error += &amp;quot;Error1:&amp;quot; + applyconfigerror.Message + &amp;quot;\r\n&amp;quot;; }&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;//this.AddEndpoints();&lt;br /&gt;}&lt;br /&gt;catch (Exception applyconfigerror) { error += &amp;quot;Error2:&amp;quot; + applyconfigerror.Message + &amp;quot;\r\n&amp;quot;; }&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;// this.AddDefaultBehaviors();&lt;br /&gt;}&lt;br /&gt;catch (Exception applyconfigerror) { error += &amp;quot;Error3:&amp;quot; + applyconfigerror.Message + &amp;quot;\r\n&amp;quot;; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//if (error.Length &amp;gt; 0) HttpContext.Current.AddError(new Exception( error));&lt;br /&gt;&lt;br /&gt;//this.AddEndpoints();&lt;br /&gt;//this.AddDefaultBehaviors();&lt;br /&gt;&lt;br /&gt;using (IEnumerator&amp;lt;ServiceEndpoint&amp;gt; enumerator = base.Description.Endpoints.GetEnumerator())&lt;br /&gt;{&lt;br /&gt;while (enumerator.MoveNext())&lt;br /&gt;{&lt;br /&gt;ServiceEndpoint current = enumerator.Current;&lt;br /&gt;//current.Binding.Scheme&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//}&lt;br /&gt;//catch (Exception ex)&lt;br /&gt;// {&lt;br /&gt;//HttpContext.Current.AddError(ex);&lt;br /&gt;// }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;span style="font-size:10pt;line-height:115%;font-family:'Courier New';"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx&amp;amp;;subject=WCF+RIA+Service+Hosting+%3a%3a+WCF+RIA+Service+Configuration+in+a+Shared+Hosting%2fServer" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+WCF+RIA+Service+Configuration+in+a+Shared+Hosting%2fServer" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx&amp;amp;title=WCF+RIA+Service+Hosting+%3a%3a+WCF+RIA+Service+Configuration+in+a+Shared+Hosting%2fServer" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+WCF+RIA+Service+Configuration+in+a+Shared+Hosting%2fServer" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+WCF+RIA+Service+Configuration+in+a+Shared+Hosting%2fServer&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/WCF-RIA-Service-Hosting-_3A003A00_-WCF-RIA-Service-Configuration-in-a-Shared-Hosting_2F00_Server.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60298" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ASPHostCentral/default.aspx">ASPHostCentral</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral.com/default.aspx">asphostcentral.com</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/wcf+hosting/default.aspx">wcf hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/RIA+Service+hosting/default.aspx">RIA Service hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/wcf+ria+service+hosting/default.aspx">wcf ria service hosting</category></item><item><title>ASPHostCentral.com Review :: Top Recommended Web Hoster</title><link>http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx</link><pubDate>Wed, 03 Mar 2010 02:49:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60297</guid><dc:creator>asphostcentral</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font size="3" face="Calibri"&gt;The following feedback was posted by &lt;em&gt;&lt;b&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;Welly Ang&lt;/span&gt;&lt;/b&gt;&lt;/em&gt; (&lt;em&gt;&lt;u&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;g********s.com&lt;/span&gt;&lt;/u&gt;&lt;/em&gt;):&lt;br /&gt;&lt;/font&gt;&lt;span&gt;&lt;br /&gt;&lt;font size="3" face="Calibri"&gt;&amp;ldquo;I&amp;#39;m so excited about your hosting.... I have been from hosting company to hosting company looking for a good developer package. I have used 5 different hosts in the past 2 weeks trying to find a good flexible and fast host and I think you guys are finally the ones I&amp;#39;m looking for! Thanks for the quick support and the great flexibility in your hosting! You gave me control over pretty much everything on my domain, so it&amp;#39;s so much easier and quicker to troubleshoot and administer...&amp;rdquo;&lt;br /&gt;&lt;br /&gt;The feedback is based on the following matrix submitted by the client: &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3" face="Calibri"&gt;- Overall Rating: &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;9.5 &lt;/span&gt;&lt;/strong&gt;out of 10&lt;br /&gt;- Uptime and Reliability: &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;9.5&lt;/span&gt;&lt;/strong&gt; out of 10&lt;br /&gt;- Customer Support Assistance: &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;9.5 &lt;/span&gt;&lt;/strong&gt;out of 10&lt;br /&gt;- After Sales Service: &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;10&lt;/span&gt;&lt;/strong&gt; out of 10&lt;br /&gt;- Server Performance and Speed: &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;9.5&lt;/span&gt;&lt;/strong&gt; out of 10&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx&amp;amp;;subject=ASPHostCentral.com+Review+%3a%3a+Top+Recommended+Web+Hoster" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx&amp;amp;;title=ASPHostCentral.com+Review+%3a%3a+Top+Recommended+Web+Hoster" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx&amp;amp;title=ASPHostCentral.com+Review+%3a%3a+Top+Recommended+Web+Hoster" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx&amp;amp;;title=ASPHostCentral.com+Review+%3a%3a+Top+Recommended+Web+Hoster" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx&amp;amp;;title=ASPHostCentral.com+Review+%3a%3a+Top+Recommended+Web+Hoster&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASPHostCentral.com-Review-_3A003A00_-Top-Recommended-Web-Hoster.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60297" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral+best+host/default.aspx">asphostcentral best host</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral.com+review/default.aspx">asphostcentral.com review</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral+good+host/default.aspx">asphostcentral good host</category></item><item><title>DiscountASP.NET announces launching support for Microsoft IIS Database Manager 1.0 for their Windows Server 2008 hosting platform, allowing customers to manage local and remote databases from within IIS Manager</title><link>http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx</link><pubDate>Tue, 02 Mar 2010 15:49:59 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60285</guid><dc:creator>ssmith</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;DiscountASP.NET further announces enhancing the user experience through integrating a SQL Server backup and SQL Server restore solution within the DB Manager interface.&lt;/p&gt;  &lt;p&gt;The IIS Database Manager is an out-of-band IIS UI module released by Microsoft to allow users to manage their local and remote databases from within IIS Manager. Once connected, IIS DB Manager provides an array of functionalities including managing tables, views, stored procedures and data as well as running ad hoc queries. IIS Database Manager provides support for both SQL Server 2008 and SQL Server 2005 databases.&lt;/p&gt;  &lt;p&gt;To improve the user experience, DiscountASP.NET integrated the DB Manager UI with SQL Server backup and SQL Server restore functionality. With this enhancement, customers can use DBManager within IIS Manager to back up their SQL Server databases and save their backups within the App_Data folder.&lt;/p&gt;  &lt;p&gt;Customers can also use DB Manager to select from a list of previously saved backups and restore a specific SQL backup. &lt;/p&gt;  &lt;p&gt;About DiscountASP.NET:&lt;/p&gt;  &lt;p&gt;As a Microsoft Gold Certified partner, DiscountASP.NET is an innovative leader in Microsoft Windows hosting. DiscountASP.NET is one of the first hosts to offer Windows Server 2008 shared hosting and was voted Best ASP.NET Hosting Service in the asp.netPRO Magazine Readers' Choice poll for five consecutive years (2005-2009). Through strong word-of-mouth and their commitment to ASP.NET and SQL technology, DiscountASP.NET has become the choice for affordable enterprise-class ASP.NET web hosting. &lt;/p&gt;  &lt;p&gt;For more information, visit &lt;a href="http://www.DiscountASP.NET"&gt;http://www.DiscountASP.NET&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx&amp;amp;;subject=DiscountASP.NET+announces+launching+support+for+Microsoft+IIS+Database+Manager+1.0+for+their+Windows+Server+2008+hosting+platform%2c+allowing+customers+to+manage+local+and+remote+databases+from+within+IIS+Manager" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx&amp;amp;;title=DiscountASP.NET+announces+launching+support+for+Microsoft+IIS+Database+Manager+1.0+for+their+Windows+Server+2008+hosting+platform%2c+allowing+customers+to+manage+local+and+remote+databases+from+within+IIS+Manager" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx&amp;amp;title=DiscountASP.NET+announces+launching+support+for+Microsoft+IIS+Database+Manager+1.0+for+their+Windows+Server+2008+hosting+platform%2c+allowing+customers+to+manage+local+and+remote+databases+from+within+IIS+Manager" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx&amp;amp;;title=DiscountASP.NET+announces+launching+support+for+Microsoft+IIS+Database+Manager+1.0+for+their+Windows+Server+2008+hosting+platform%2c+allowing+customers+to+manage+local+and+remote+databases+from+within+IIS+Manager" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx&amp;amp;;title=DiscountASP.NET+announces+launching+support+for+Microsoft+IIS+Database+Manager+1.0+for+their+Windows+Server+2008+hosting+platform%2c+allowing+customers+to+manage+local+and+remote+databases+from+within+IIS+Manager&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/03/02/DiscountASP.NET-announces-launching-support-for-Microsoft-IIS-Database-Manager-1.0-for-their-Windows-Server-2008-hosting-platform_2C00_-allowing-customers-to-manage-local-and-remote-databases-from-within-IIS-Manager.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60285" width="1" height="1"&gt;</description></item><item><title>ASP.NET 4 Hosting :: Working with a Database using Model-First Development Technique</title><link>http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx</link><pubDate>Tue, 02 Mar 2010 07:57:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60240</guid><dc:creator>asphostcentral</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size="3" face="Calibri"&gt;The upcoming release of Visual Studio 2010 will contain the Entity Framework 4 which is Microsoft&amp;#39;s second release of the Entity Framework.&amp;nbsp; The new and improved EF4 contains a boat load of new features which many developers have suggested after using version 1.&amp;nbsp; It also comes closer to the features offered in other Object-Relational Mapping tools such as NHibernate.&amp;nbsp; Object-Relational Mapping tools are used to eliminate much of the tedious code needed to have an application persist and retrieve data from a database.&amp;nbsp; The developer uses a visual interface to build classes that map to tables, relationships, stored procedures, and other objects in a database.&amp;nbsp; One of the great new features of EF4 is the ability to create an ADO.NET Entity Data Model and then build the database from the model.&amp;nbsp; Previously the developer needed to create the database first and then generate the model.&amp;nbsp; EF4 still supports reverse engineering a database but being able to use Visual Studio to design a database based off of an object model is a big step forward with this tool.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;Today, we are going to discuss a way to create a database using Model-First Development Technique. &lt;b&gt;&lt;a href="http://www.asphostcentral.com" title="ASP.NET 4 Hosting"&gt;ASPHostCentral.com&lt;/a&gt;&lt;/b&gt;, as the premier ASP.NET and Windows Hosting provider, proudly presents this article to anyone and we believe it will help many ASP.NET communities; especially to those who are using ASP.NET 4 Framework. In case you are looking for ASP.NET 4 Hosting, you can always consider &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;&lt;a href="http://www.asphostcentral.com" title="ASP.NET 4 Hosting"&gt;ASPHostCentral.com&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt; and you can start from our lowest Standard Plan &lt;strong&gt;&lt;span style="font-family:'Calibri','sans-serif';"&gt;@$4.99/month&lt;/span&gt;&lt;/strong&gt; to host your WCF-service site.&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The goal of this article is to show you how to create an ADO.NET Entity Data Model using the Entity Framework 4.&amp;nbsp; This article uses Visual Studio 2010 Beta 2 so some of the steps may change once the final version is released to production.&amp;nbsp; Future articles will build upon this application to dive deeper into the EF4 to demonstrate how to query and display data, incorporate stored procedures, customize the classes generated by the EF4, and much more. &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;br /&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Creating a Database using Model-First Development&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;i&gt;Step 1: Create a New Solution&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Launch Visual Studio 2010 Beta 2&lt;br /&gt;2. Click the New Project link on the Start Page.&amp;nbsp; The New Project dialog box should appear&lt;br /&gt;3. Click on the Visual C# node from the tree view of installed templates&lt;br /&gt;4. Select Empty ASP.NET Web Application from the list of templates&lt;br /&gt;5. Enter OrderSystem for the project name and click the OK button&lt;br /&gt;&lt;br /&gt;Visual Studio will create a solution file in the folder you specified and also create a sub folder that contains the web site&amp;#39;s project file and config files&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Step 2: Create an ADO.NET Entity Data Model&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The next step is to create the ADO.NET Entity Data Model.&amp;nbsp; For this application we&amp;#39;ll model the concept of users and addresses.&amp;nbsp; A user can have more than one address so we&amp;#39;ll build an entity data model that models this relationship&lt;br /&gt;&lt;br /&gt;1. Right click on the OrderSystem project in the Solution Explorer and select Add &amp;agrave; New Item&amp;hellip;&lt;br /&gt;2. Click the Data node under the Visual C# node in the Installed Templates tree&lt;br /&gt;3. Select the ADO.NET Entity Data Model template&lt;br /&gt;4. Change the name to OrderDB.edmx and click the Add button&lt;br /&gt;5. Visual Studio will display the Entity Data Model Wizard.&amp;nbsp; This is where you can decide to build the model from an existing database or create the model first and then build the database&lt;br /&gt;6. Choose Empty model from the wizard and click the Finish button&lt;br /&gt;&lt;br /&gt;The OrdersDB.edmx file will be added to your project and the file will be displayed in the Entity Framework Designer&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;font size="3" face="Calibri"&gt;Step 3: Create the Entities and Associations&lt;/font&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;The next step is to model the user and user&amp;#39;s addresses relationship. Let&amp;#39;s first create the user entity.&lt;br /&gt;&lt;br /&gt;1. Right click on the Entity Data Model Designer and select Add&amp;agrave;Entity&amp;hellip; from the pop-up menu&lt;br /&gt;2. The Add Entity dialog box should appear.&amp;nbsp; Enter UserAccount for the Entity name.&amp;nbsp; Notice that as you type the Entity name the Entity Set name pluralizes the Entity name.&amp;nbsp; Think of the Entity name as the class that represents a record and the Entity set as the class that represents the table of those records&lt;br /&gt;3. By default the Entity Framework will create a Primary Key called Id.&amp;nbsp; If you wish to not create a primary key you can uncheck the Create key property checkbox from the dialog box.&amp;nbsp; For this example we want a primary key so leave the box checked&lt;br /&gt;4. Click the OK button. The UserAccount entity will be added to the entity diagram&lt;br /&gt;5. The next step is to add properties to this entity. Properties will map to fields in a table. We&amp;#39;ll first add the First and Last name properties&lt;br /&gt;6. Right click on the UserAccount entity and select Add&amp;agrave;Scalar property from the pop-up menu&lt;br /&gt;7. Change the property name to FirstName&lt;br /&gt;8. In the properties window change the MaxLength to 50. Scalar properties are strings by default&lt;br /&gt;9. Add another property called LastName the same way and set its MaxLength to 50&lt;br /&gt;&lt;br /&gt;The next step is to add and insert date and update date properties.&amp;nbsp; I like to have the inserted and updated dates on every entity just for the sake of trouble shooting.&amp;nbsp; These are two properties that will be added to every entity so it is the perfect candidate for a Complex Type.&amp;nbsp; A Complex Type allows you to define a set of properties and then associate them with multiple entities.&lt;br /&gt;&lt;br /&gt;10. In the Model Browser window, left click on the Complex Types nodes.&amp;nbsp; Sometimes you have to click more than once for the node to be selected.&amp;nbsp; I&amp;#39;m using Beta 2 so hopefully this will be fixed when it goes live.&amp;nbsp; Once the node is selected right click and select Create Complex Type from the pop-up menu&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;11. Change the name of the complex type to AuditFields&lt;br /&gt;12. Right click on the AuditFields complex type in the Model Browser and select Add&amp;agrave;Scalar Property&amp;agrave;DateTime from the pop-up menu&lt;br /&gt;13. Change the name to InsertDate&lt;br /&gt;14. Follow the same steps to add the UpdateDate property to the complex type&lt;br /&gt;15. Now you can add the Complex property to the UserAccount entity.&amp;nbsp; Right click the UserAccount entity and select Add&amp;agrave;Complex Property from the pop-up menu&lt;br /&gt;16. Change the name to AuditFields.&amp;nbsp; The type should have already defaulted to AuditFields&lt;br /&gt;&lt;br /&gt;When the database is created from this entity it will contain the two audit fields defined in the complex type.Now let&amp;#39;s add the address entity.&amp;nbsp; A user can have more than one address so there is a one-to-many relationship between these two entities&lt;br /&gt;&lt;br /&gt;17. Right click the designer and select Add&amp;agrave;Entity from the pop-up menu&lt;br /&gt;18. Change the name to Address and then click the OK button&lt;br /&gt;19. Add scalar properties to the Address entity for Address1, Address2, City, State, and Zip.&amp;nbsp; All of these properties should be strings with lengths of 50, 50, 50, 2, and 5 respectively&lt;br /&gt;20. Change Address2 to be nullable by settting the Nullable property to True in the properties window.&amp;nbsp; All other properties are required&lt;br /&gt;21. Now add the Audit Fields to this entity by right clicking the Address entity and selecting Add&amp;agrave;Complex Property from the pop-up menu. &amp;nbsp;Set the name to AuditFields and the type to AuditFields&lt;br /&gt;&lt;br /&gt;The next step is to create an association between the UserAccount and Address entities.&lt;br /&gt;&lt;br /&gt;22. Right click on the UserAccount entity and select Add&amp;agrave;Association from the pop-up menu&lt;br /&gt;23. The Add Association dialog appears.&amp;nbsp; It assumes correctly that you want to create a one-to-many relationship between these two entities.&amp;nbsp; You use the Multiplicity drop down to define the variations of relationships but for this example you can leave the defaults and click the OK button.&amp;nbsp; Notice that a UserAccountId property was added to the Address table&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Step 4: Generate the Database&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now that the entities are defined we can create the database.&amp;nbsp; Visual Studio makes this quite simple.&amp;nbsp; A script is generated with the correct DDL statements to create tables, indexes, and relationships which you can then execute against your database&lt;br /&gt;&lt;br /&gt;1. Right click on the Designer and select Generate Database from Model&amp;hellip; from the pop-up menu.&amp;nbsp; The Generate Database Wizard will appear&lt;br /&gt;2. Click the New Connection&amp;hellip; button&lt;br /&gt;3. Enter your Server Name. Choose either User Windows Authentication or Use SQL Server Authentication.&amp;nbsp; Whichever you choose you need a user that has permissions to create a database on the server.&amp;nbsp; For this example I&amp;#39;ll use Windows Authentication&lt;br /&gt;4. Enter OrderSystem for the name of the database and click the OK button&lt;br /&gt;5. You should get a message stating &amp;quot;The database &amp;#39;OrderSystem&amp;#39; does not exist or you do not have permissions to see it.&amp;nbsp; Would you like to attempt to create it?&amp;quot;&amp;nbsp; Click the Yes button&lt;br /&gt;6. The database should be created and you&amp;#39;ll be returned to the Generate Database Wizard dialog.&amp;nbsp; Click the Next button&lt;br /&gt;7. The wizard will now generate the DDL statements needed to create this database&lt;br /&gt;8. Click the Finish button&lt;br /&gt;9. A new file will be added to the project called OrderDB.edmx.sql. The file contains the DDL statements to create the database.&amp;nbsp; The text of the file is as follows:&lt;br /&gt;&lt;/font&gt;&lt;span style="font-size:8.5pt;color:teal;line-height:115%;"&gt;--&amp;nbsp;--------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;line-height:115%;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Date&amp;nbsp;Created:&amp;nbsp;01/17/2010&amp;nbsp;09:39:04&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Generated&amp;nbsp;from&amp;nbsp;EDMX&amp;nbsp;file:&amp;nbsp;C:\Documents&amp;nbsp;and Settings\VinceVarallo\&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;my&amp;nbsp;documents\visual&amp;nbsp;studio 2010\Projects\OrderSystem\OrderSystem\OrderDB.edmx&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;--------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;SET&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;QUOTED_IDENTIFIER&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;OFF&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;SET&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ANSI_NULLS&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ON&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;USE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[OrderSystem]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;IF&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;SCHEMA_ID(N&lt;/span&gt;&lt;span style="font-size:8.5pt;color:red;font-family:'Courier New';"&gt;&amp;#39;dbo&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;IS&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;EXECUTE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(N&lt;/span&gt;&lt;span style="font-size:8.5pt;color:red;font-family:'Courier New';"&gt;&amp;#39;CREATE SCHEMA&amp;nbsp;[dbo]&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Dropping&amp;nbsp;existing&amp;nbsp;FK&amp;nbsp;constraints&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Dropping&amp;nbsp;existing&amp;nbsp;tables&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;all&amp;nbsp;tables&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;table&amp;nbsp;&amp;#39;UserAccounts&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;TABLE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[dbo].[UserAccounts]&amp;nbsp;(&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Id]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;int&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[FirstName]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(50)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[LastName]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(50)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[AuditFields_InsertDate]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;datetime&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[AuditFields_UpdateDate]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;datetime&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;table&amp;nbsp;&amp;#39;Addresses&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CREATE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;TABLE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[dbo].[Addresses]&amp;nbsp;(&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Id]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;int&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Address1]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(50)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Address2]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(50)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[City]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(50)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[State]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(2)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Zip]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;nvarchar&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;(5)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[AuditFields_InsertDate]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;datetime&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[AuditFields_UpdateDate]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;datetime&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;,&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[UserAccountId]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;int&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NOT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:silver;font-family:'Courier New';"&gt;NULL&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;--------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;all&amp;nbsp;Primary&amp;nbsp;Key&amp;nbsp;Constraints&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;primary&amp;nbsp;key&amp;nbsp;on&amp;nbsp;[Id]&amp;nbsp;in&amp;nbsp;table &amp;#39;UserAccounts&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ALTER&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;TABLE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[dbo].[UserAccounts]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;WITH&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;NOCHECK&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ADD&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CONSTRAINT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[PK_UserAccounts]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;PRIMARY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;KEY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CLUSTERED&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;([Id]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ASC&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ON&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;PRIMARY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;primary&amp;nbsp;key&amp;nbsp;on&amp;nbsp;[Id]&amp;nbsp;in&amp;nbsp;table &amp;#39;Addresses&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ALTER&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;TABLE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[dbo].[Addresses]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;WITH&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;NOCHECK&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ADD&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CONSTRAINT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[PK_Addresses]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;PRIMARY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;KEY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CLUSTERED&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;([Id]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ASC&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ON&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;PRIMARY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;--------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;all&amp;nbsp;Foreign&amp;nbsp;Key&amp;nbsp;Constraints&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Creating&amp;nbsp;foreign&amp;nbsp;key&amp;nbsp;on&amp;nbsp;[UserAccountId]&amp;nbsp;in table&amp;nbsp;&amp;#39;Addresses&amp;#39;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ALTER&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;TABLE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[dbo].[Addresses]&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;WITH&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;NOCHECK&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ADD&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;CONSTRAINT&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[FK_UserAccountAddress]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;FOREIGN&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;KEY&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;([UserAccountId])&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;REFERENCES&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;[dbo].[UserAccounts]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;([Id])&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ON&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;DELETE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;NO&amp;nbsp;ACTION&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;ON&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size:8.5pt;color:blue;font-family:'Courier New';"&gt;UPDATE&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&amp;nbsp;NO&amp;nbsp;ACTION&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;GO&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;-- --------------------------------------------------&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;Script&amp;nbsp;has&amp;nbsp;ended&lt;/span&gt;&lt;span style="font-size:8.5pt;color:black;font-family:'Courier New';"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 6pt;line-height:normal;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;" class="MsoNormal"&gt;&lt;span style="font-size:8.5pt;color:teal;font-family:'Courier New';"&gt;--&amp;nbsp;--------------------------------------------------&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;font face="Calibri"&gt;&lt;font size="3"&gt;It is important to note that the tables weren&amp;#39;t added to the database yet.&amp;nbsp; In order to actually create the tables you need to right click in the OrderDB.edmx.sql file and select Execute SQL from the pop-up menu.&amp;nbsp; You&amp;#39;ll be prompted to log into the server that contains your database.&amp;nbsp; Once you are logged in the script will execute and the objects will be added to your database&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;b&gt;&lt;span style="font-size:14pt;line-height:115%;"&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="3"&gt;That&amp;#39;s all you need to do to create a database using the new Entity Framework&amp;#39;s Model First methodology. This is a big improvement over the first edition because it allows you to use Visual Studio to work through the design of you objects first and then VS can figure out how to create the database tables, indexes, and relationships for you.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx&amp;amp;;subject=ASP.NET+4+Hosting+%3a%3a+Working+with+a+Database+using+Model-First+Development+Technique" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx&amp;amp;;title=ASP.NET+4+Hosting+%3a%3a+Working+with+a+Database+using+Model-First+Development+Technique" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx&amp;amp;title=ASP.NET+4+Hosting+%3a%3a+Working+with+a+Database+using+Model-First+Development+Technique" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx&amp;amp;;title=ASP.NET+4+Hosting+%3a%3a+Working+with+a+Database+using+Model-First+Development+Technique" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx&amp;amp;;title=ASP.NET+4+Hosting+%3a%3a+Working+with+a+Database+using+Model-First+Development+Technique&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/03/02/ASP.NET-4-Hosting-_3A003A00_-Working-with-a-Database-using-Model_2D00_First-Development-Technique.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60240" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ASPHostCentral/default.aspx">ASPHostCentral</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral.com/default.aspx">asphostcentral.com</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asp.net4+hosting/default.aspx">asp.net4 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/.net+4+hosting/default.aspx">.net 4 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/.net4+hosting/default.aspx">.net4 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asp.net+4+hosting/default.aspx">asp.net 4 hosting</category></item><item><title>Iron Speed Releases SaaS Application Generator</title><link>http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx</link><pubDate>Thu, 25 Feb 2010 20:26:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:60153</guid><dc:creator>ssmith</dc:creator><slash:comments>6</slash:comments><description>&lt;p&gt;New SaaS application generator speeds cloud application development   &lt;br /&gt;San Jose, CA – February 24, 2010. Software development tools-maker Iron Speed, Inc. released    &lt;br /&gt;Iron Speed Designer Version 6.2.1, the latest version of its popular Web 2.0 application    &lt;br /&gt;generator. Iron Speed Designer generates rich, interactive database and reporting applications    &lt;br /&gt;for the Microsoft .NET and software-as-a-service cloud computing environments.    &lt;br /&gt;Iron Speed Designer generates professional-looking, feature-rich Web 2.0 applications that are    &lt;br /&gt;easy to customize and ready to deploy. The ability to implement SaaS applications without any    &lt;br /&gt;special software development knowledge helps IT departments generate robust, productivityenhancing    &lt;br /&gt;applications in less time and with fewer resources.    &lt;br /&gt;“When we first started looking at Iron Speed Designer, we created a time-line for all our    &lt;br /&gt;development projects, anticipating they would take a year. Iron Speed Designer helped us    &lt;br /&gt;accomplish our goals in six months.” – Matthew Cushing of Cypress Administrative Services    &lt;br /&gt;Create cloud applications without hand-coding    &lt;br /&gt;Iron Speed Designer generates database, reporting and workflow applications straight from    &lt;br /&gt;existing databases. Generated applications contain advanced user interface features often found    &lt;br /&gt;in custom hand-coded applications, but without the hand-coding.    &lt;br /&gt;Sophisticated pages and reports provide users with the data they need. Developers can generate    &lt;br /&gt;workflow pages, automate business processes and utilize built-in reporting and data exporting to    &lt;br /&gt;Microsoft Word and Excel. Reports may be emailed, copied and annotated.    &lt;br /&gt;Support for Active Directory authentication, Windows authentication and Database security    &lt;br /&gt;provide single sign-on capabilities for application users. Developers can mix and match    &lt;br /&gt;authorization and authentication security methods without coding.    &lt;br /&gt;“The ability to select one type of security for authentication and another for authorization makes    &lt;br /&gt;our SaaS application even more flexible. This is especially convenient where user roles are    &lt;br /&gt;already assigned in the database.“– Mike Landi, Developer, Light Speed Solutions    &lt;br /&gt;Easy deployment to the cloud    &lt;br /&gt;Iron Speed Designer’s built-in MSI deployment installer simplifies the process of moving    &lt;br /&gt;applications from development environment to production, allowing developers to deploy to any    &lt;br /&gt;Microsoft .NET hosting provider quickly. There are no proprietary APIs or frameworks to learn.    &lt;br /&gt;“Anyone can deploy database-driven cloud applications to a hosting service provider using Iron    &lt;br /&gt;Speed Designer. “– Ben Demes, Developer, Dot Net Architect LLC    &lt;br /&gt;Non-developers can build cloud applications    &lt;br /&gt;Iron Speed Designer allows DBAs, web designers and other non-developers to generate    &lt;br /&gt;software-as-a-service applications without knowledge of .NET, coding or HTML. The Application    &lt;br /&gt;Wizard in Iron Speed Designer takes you step-by-step through the process of creating a new    &lt;br /&gt;application.    &lt;br /&gt;Features like the page layout spreadsheet dramatically simplify application customization, letting    &lt;br /&gt;developers and non-developers alike create sophisticated database-driven web applications    &lt;br /&gt;without any knowledge of HTML or ASPX. Developers can select a new panel configuration with    &lt;br /&gt;just a few mouse clicks and easily rearrange fields, tables and other components.    &lt;br /&gt;“The layout spreadsheet’s interface is very familiar - like Microsoft Excel. Iron Speed has    &lt;br /&gt;essentially eliminated the learning curve when it comes to cloud application development.” –    &lt;br /&gt;Jeremy Scrime, Senior Computer Programmer, Warren County New York    &lt;br /&gt;Iron Speed Designer Version 6.2 System Requirements    &lt;br /&gt;Iron Speed Designer Version 6.2 runs on Microsoft Windows 7, Windows Vista, Windows XP, and    &lt;br /&gt;Windows Server 2003 and 2008. It generates .NET Web applications for Microsoft SQL Server,    &lt;br /&gt;Oracle, Microsoft Access and MySQL. These applications may be deployed on any machine    &lt;br /&gt;running the .NET Framework. Find complete information about Iron Speed Designer Version 6.2    &lt;br /&gt;at www.ironspeed.com.    &lt;br /&gt;About Iron Speed, Inc.    &lt;br /&gt;Iron Speed is the leader in enterprise-class application generation. Our software development    &lt;br /&gt;tools generate database and reporting applications in significantly less time and cost than handcoding.    &lt;br /&gt;Our flagship product, Iron Speed Designer, is the fastest way to deliver applications for    &lt;br /&gt;the Microsoft .NET and software-as-a-service cloud computing environments.    &lt;br /&gt;With products built on decades of experience in enterprise application development and largescale    &lt;br /&gt;e-commerce systems, Iron Speed products eliminate the need for developers to choose    &lt;br /&gt;between &amp;quot;full featured&amp;quot; and &amp;quot;on schedule.&amp;quot;    &lt;br /&gt;Founded in 1999, Iron Speed is well funded with a capital base of over $20M and strategic    &lt;br /&gt;investors that include Arrow Electronics and Avnet, as well as executives from AMD, Excelan,    &lt;br /&gt;Onsale, and Oracle. The company is based in San Jose, Calif., and is located online at    &lt;br /&gt;www.ironspeed.com.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx&amp;amp;;subject=Iron+Speed+Releases+SaaS+Application+Generator" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx&amp;amp;;title=Iron+Speed+Releases+SaaS+Application+Generator" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx&amp;amp;title=Iron+Speed+Releases+SaaS+Application+Generator" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx&amp;amp;;title=Iron+Speed+Releases+SaaS+Application+Generator" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx&amp;amp;;title=Iron+Speed+Releases+SaaS+Application+Generator&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/pressreleases/archive/2010/02/25/Iron-Speed-Releases-SaaS-Application-Generator.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=60153" width="1" height="1"&gt;</description></item><item><title>WCF RIA Service Hosting :: Error Message - Load Operation Failed for query &quot;GetUser&quot;</title><link>http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx</link><pubDate>Tue, 23 Feb 2010 06:26:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:59962</guid><dc:creator>asphostcentral</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;Today, we are going to discuss a common issue that you may find when running WCF RIA service on a shared hosting server. &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;, as the premier ASP.NET and Windows Hosting provider, proudly presents this article to anyone and we believe it will help many ASP.NET communities; especially to those who are using WCF RIA Service. In case you are looking for WCF RIA Service Hosting, you can always consider &lt;b&gt;ASPHostCentral.com&lt;/b&gt; and you can start from our lowest Standard Plan &lt;b&gt;@$4.99/month&lt;/b&gt; to host your WCF-service site.&lt;br /&gt;&lt;br /&gt;One of the most common errors that you may find when running your WCF RIA Service on a shared hosting server is the error message: &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;i&gt;&amp;ldquo;Load Operation Failed for query &amp;quot;GetUser&amp;quot;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;This is always an annoying issue with Silverlight deployment to do with connection strings and domain authorizations. Basically it&amp;rsquo;s a very generic error that pops up if you&amp;rsquo;re using the in-built standard asp.net model, such as the RIA services models of .net/silverlight development using aspnet authorization and registration. &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;There is a variety of reasons you will get the message popping up, but they all mean that your aspnet authorization calls (once of which is the GetUser call) are not able to contact the database that contains your aspnet data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;&lt;font face="Calibri"&gt;Common Reasons&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- Your development system is using a local SQL Express database which works fine when your on your own machine, but once its online, it&amp;rsquo;s still trying to find the same LocalSqlServer or localhost, and obviously cant. You can get round this in your web.config, using stuff like:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&amp;lt;remove name=&amp;quot;LocalSqlServer&amp;quot; /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name=&amp;quot;LocalSqlServer&amp;quot; connectionString=&amp;quot;etc etc&amp;quot;.&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- Or possibly you have all the connection strings point to the right places, but your new server database doesnt contain all the necessary aspnet tables/framework. Theres some tools that are located in your windows/.net folders, such as aspnet_regiis.exe, which if you search for online, you willl get details on how to use them to automatically configure/update an sqlserver with the all the necessary aspnet objects.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- You haven not deployed necessary references to the webserver, especially ones such as the System.Web.Ria, System.Web.DomainServices and System.ComponentModel.DataAnnotations. You can select them in your visual studio project and mark the Copy Local propery to True.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- Also if you have any services mapped from server to client, such as WCF Services, make sure when your publishing to update their bindings/endpoint addresses in the client, as they will be still looking for those services on the localhost development server.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- Also make sure you use a valid crossdomain.xml and clientaccesspolicy.xml on your web project/deployment. If you do a websearch for these two filenames, you will get lots of examples of various settings to use that might be relevant to your site operation.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Theres also lots of other settings to tweak with your IIS settings that sometimes cause the issues, such as allowed IIS authentications such as anonymous, impersination, forms etc. Some servers run/allow multiple authentications that can cause issues with the aspnet operations of silverlight.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;It&amp;rsquo;s a bit of a minefield, but basically as you can see the problem is a difficult one for so many silverlight developers because there can be so many solutions to fixing the issue.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The other alternative that you can consider is you can use mix of setting of the correct IIS authentication allowing anonymous and forms, and making sure the default connection strings were update correctly. As for the stuff on our server, please (if possible) remove ASP.NET authorization from your application and please write your own custom authorization, so it&amp;rsquo;s not even trying to update the local sql server for the inbuilt ASP.NET stuff.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&lt;span&gt;&lt;font size="3"&gt;Hope this helps shed some light.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;Reasons to trust your WCF-based website to ASPHostCentral.com&lt;/span&gt;&lt;/b&gt;&lt;span&gt; &lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;font size="3" face="Calibri"&gt;What we think makes &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; so compelling is how deeply integrated all the pieces are. We integrate and centralize everything--from the systems to the control panel software to the process of buying a domain name. For us, that means we can innovate literally everywhere. We&amp;#39;ve put the guys who develop the software and the admins who watch over the server right next to the 24-hour Fanatical Support team, so we all learn from each other:&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;24/7-based Support&lt;/b&gt; - We never fall asleep and we run a service that is operating 24/7 a year. Even everyone is on holiday during Easter or Christmas/New Year, we are always behind our desk serving our customers&lt;br /&gt;- &lt;b&gt;Excellent Uptime Rate&lt;/b&gt; - Our key strength in delivering the service to you is to maintain our server uptime rate. We never ever happy to see your site goes down and we truly understand that it will hurt your onlines business. If your service is down, it will certainly become our pain and we will certainly look for the right pill to kill the pain ASAP&lt;br /&gt;- &lt;b&gt;High Performance and Reliable Server&lt;/b&gt; - We never ever overload our server with tons of clients. We always load balance our server to make sure we can deliver an excellent service, coupling with the high performance and reliable server&lt;br /&gt;- &lt;b&gt;Experts in WCF RIA Service Hosting&lt;/b&gt; - Given the scale of our environment, we have recruited and developed some of the best talent in the hosting technology that you are using. Our team is strong because of the experience and talents of the individuals who make up ASPHostCentral&lt;br /&gt;- &lt;b&gt;Daily Backup Service&lt;/b&gt; - We realise that your website is very important to your business and hence, we never ever forget to create a daily backup. Your database and website are backup every night into a permanent remote tape drive to ensure that they are always safe and secure. The backup is always ready and available anytime you need it&lt;br /&gt;- &lt;b&gt;Easy Site Administration&lt;/b&gt; - With our powerful control panel, you can always administer most of your site features easily without even needing to contact for our Support Team. Additionally, you can also install &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/FREE-Application-Installations.aspx"&gt;&lt;span style="color:purple;"&gt;&lt;font size="3" face="Calibri"&gt;more than 100 FREE applications&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; directly via our Control Panel in 1 minute!&lt;br /&gt;&lt;br /&gt;Happy hosting!&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333333;"&gt;&lt;font size="3" face="Calibri"&gt;What we think makes &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; so compelling is how deeply integrated all the pieces are. We integrate and centralize everything--from the systems to the control panel software to the process of buying a domain name. For us, that means we can innovate literally everywhere. We&amp;#39;ve put the guys who develop the software and the admins who watch over the server right next to the 24-hour Fanatical Support team, so we all learn from each other:&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;24/7-based Support&lt;/b&gt; - We never fall asleep and we run a service that is operating 24/7 a year. Even everyone is on holiday during Easter or Christmas/New Year, we are always behind our desk serving our customers&lt;br /&gt;- &lt;b&gt;Excellent Uptime Rate&lt;/b&gt; - Our key strength in delivering the service to you is to maintain our server uptime rate. We never ever happy to see your site goes down and we truly understand that it will hurt your onlines business. If your service is down, it will certainly become our pain and we will certainly look for the right pill to kill the pain ASAP&lt;br /&gt;- &lt;b&gt;High Performance and Reliable Server&lt;/b&gt; - We never ever overload our server with tons of clients. We always load balance our server to make sure we can deliver an excellent service, coupling with the high performance and reliable server&lt;br /&gt;- &lt;b&gt;Experts in WCF RIA Service Hosting&lt;/b&gt; - Given the scale of our environment, we have recruited and developed some of the best talent in the hosting technology that you are using. Our team is strong because of the experience and talents of the individuals who make up ASPHostCentral&lt;br /&gt;- &lt;b&gt;Daily Backup Service&lt;/b&gt; - We realise that your website is very important to your business and hence, we never ever forget to create a daily backup. Your database and website are backup every night into a permanent remote tape drive to ensure that they are always safe and secure. The backup is always ready and available anytime you need it&lt;br /&gt;- &lt;b&gt;Easy Site Administration&lt;/b&gt; - With our powerful control panel, you can always administer most of your site features easily without even needing to contact for our Support Team. Additionally, you can also install &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/FREE-Application-Installations.aspx"&gt;&lt;span style="color:purple;"&gt;&lt;font size="3" face="Calibri"&gt;more than 100 FREE applications&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; directly via our Control Panel in 1 minute!&lt;br /&gt;&lt;br /&gt;Happy hosting!&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font size="3" face="Calibri"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx&amp;amp;;subject=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+-+Load+Operation+Failed+for+query+%26quot%3bGetUser%26quot%3b" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+-+Load+Operation+Failed+for+query+%26quot%3bGetUser%26quot%3b" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx&amp;amp;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+-+Load+Operation+Failed+for+query+%26quot%3bGetUser%26quot%3b" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+-+Load+Operation+Failed+for+query+%26quot%3bGetUser%26quot%3b" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+-+Load+Operation+Failed+for+query+%26quot%3bGetUser%26quot%3b&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_2D00_-Load-Operation-Failed-for-query-_2200_GetUser_2200_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=59962" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ASPHostCentral/default.aspx">ASPHostCentral</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral.com/default.aspx">asphostcentral.com</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/silverlight+3+hosting/default.aspx">silverlight 3 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/silverlight+4+hosting/default.aspx">silverlight 4 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/wcf+hosting/default.aspx">wcf hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ria+hosting/default.aspx">ria hosting</category></item><item><title>WCF RIA Service Hosting :: Error Message – This collection already contains an address with scheme http</title><link>http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx</link><pubDate>Tue, 23 Feb 2010 06:10:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:59961</guid><dc:creator>asphostcentral</dc:creator><slash:comments>0</slash:comments><description>&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;Today, we are going to discuss a common issue that you may find when running WCF RIA service on a shared hosting server. &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;, as the premier ASP.NET and Windows Hosting provider, proudly presents this article to anyone and we believe it will help many ASP.NET communities; especially to those who are using WCF RIA Service. In case you are looking for WCF RIA Service Hosting, you can always consider ASPHostCentral.com and you can start from our lowest Standard Plan &lt;b&gt;@$4.99/month&lt;/b&gt; to host your WCF-service site.&lt;br /&gt;&lt;br /&gt;One of the most common errors that you may find when running your WCF RIA Service on a shared hosting server is the error message: &lt;br /&gt;&lt;br /&gt;&amp;ldquo;&lt;b&gt;&lt;i&gt;This collection already contains an address with scheme http.&lt;span&gt;&amp;nbsp; &lt;/span&gt;There can be at most one address per scheme in this collection&lt;/i&gt;&lt;/b&gt;&lt;i&gt;.&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. &lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;i&gt;&lt;span&gt;Exception Details: System.ArgumentException: This collection already contains an address with scheme http.&lt;span&gt;&amp;nbsp; &lt;/span&gt;There can be at most one address per scheme in this collection&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span&gt;.&amp;rdquo; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;This error message can be retrieved on the Event Viewer window on the server. If you do not have an access to the server, you may contact your hosting provider to trace this error for you.&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;&lt;font face="Calibri"&gt;&lt;br /&gt;Solution:&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="3" face="Calibri"&gt;This problem is caused by the fact that WCF only supports 1 IIS host header. Your hosting provider may have more than 2 host headers, namely &lt;/font&gt;&lt;a href="http://www.yourdomain.com/"&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;www.yourDomain.com&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; and yourDomain.com. Therefore, you may need to remove one of the host headers from the IIS. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;&lt;font face="Calibri"&gt;Other Alternative Solution:&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;u&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;The other alternative solution you can consider is to create a separate .SVC file. The solution, since WCF services hosted in IIS can have only one Base Address was to create a custom service factory to intercept and remove the additional unwanted base addresses that IIS was providing. Your default IIS settings will have 2 entries of host headers, namely: &lt;/font&gt;&lt;a href="http://www.yourdomain.com/"&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;www.yourDomain.com&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt; and yourDomain.com. You then need to customize your .svc file to specify a custom service factory. You are then able to create your custom factory by inheriting from ServiceHostFactory and overriding as required.&lt;br /&gt;&lt;br /&gt;T&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;he following is the code:&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;class CustomHostFactory : ServiceHostFactory &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomHost customServiceHost =&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new CustomHost(serviceType, baseAddresses[1]);&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return customServiceHost;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class CustomHost : ServiceHost&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public CustomHost(Type serviceType, params Uri[] baseAddresses)&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : base(serviceType, baseAddresses)&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { }&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void ApplyConfiguration()&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.ApplyConfiguration();&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;You need to pass through baseAddresses[1] (which was the www. address) but it would probably be wise to specify that address you want to prevent changes by your web host from impacting your code.&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;span&gt;&lt;font size="3" face="Calibri"&gt;Please refer to this article at &lt;/font&gt;&lt;a href="http://blogs.msdn.com/rampo/archive/2008/02/11/how-can-wcf-support-multiple-iis-binding-specified-per-site.aspx"&gt;&lt;span style="color:purple;"&gt;&lt;font size="3" face="Calibri"&gt;http://blogs.msdn.com/rampo/archive/2008/02/11/how-can-wcf-support-multiple-iis-binding-specified-per-site.aspx&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; for further information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span style="font-size:14pt;"&gt;Reasons to trust your WCF-based website to ASPHostCentral.com&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 10pt;line-height:normal;" class="MsoNormal"&gt;&lt;span style="color:#333333;"&gt;&lt;font size="3" face="Calibri"&gt;What we think makes &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/" title="WCF RIA Service Hosting"&gt;&lt;b&gt;&lt;span style="color:blue;"&gt;&lt;font size="3" face="Calibri"&gt;ASPHostCentral.com&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; so compelling is how deeply integrated all the pieces are. We integrate and centralize everything--from the systems to the control panel software to the process of buying a domain name. For us, that means we can innovate literally everywhere. We&amp;#39;ve put the guys who develop the software and the admins who watch over the server right next to the 24-hour Fanatical Support team, so we all learn from each other:&lt;br /&gt;&lt;br /&gt;- &lt;b&gt;24/7-based Support&lt;/b&gt; - We never fall asleep and we run a service that is operating 24/7 a year. Even everyone is on holiday during Easter or Christmas/New Year, we are always behind our desk serving our customers&lt;br /&gt;- &lt;b&gt;Excellent Uptime Rate&lt;/b&gt; - Our key strength in delivering the service to you is to maintain our server uptime rate. We never ever happy to see your site goes down and we truly understand that it will hurt your onlines business. If your service is down, it will certainly become our pain and we will certainly look for the right pill to kill the pain ASAP&lt;br /&gt;- &lt;b&gt;High Performance and Reliable Server&lt;/b&gt; - We never ever overload our server with tons of clients. We always load balance our server to make sure we can deliver an excellent service, coupling with the high performance and reliable server&lt;br /&gt;- &lt;b&gt;Experts in WCF RIA Service Hosting&lt;/b&gt; - Given the scale of our environment, we have recruited and developed some of the best talent in the hosting technology that you are using. Our team is strong because of the experience and talents of the individuals who make up ASPHostCentral&lt;br /&gt;- &lt;b&gt;Daily Backup Service&lt;/b&gt; - We realise that your website is very important to your business and hence, we never ever forget to create a daily backup. Your database and website are backup every night into a permanent remote tape drive to ensure that they are always safe and secure. The backup is always ready and available anytime you need it&lt;br /&gt;- &lt;b&gt;Easy Site Administration&lt;/b&gt; - With our powerful control panel, you can always administer most of your site features easily without even needing to contact for our Support Team. Additionally, you can also install &lt;/font&gt;&lt;a href="http://www.asphostcentral.com/FREE-Application-Installations.aspx"&gt;&lt;span style="color:purple;"&gt;&lt;font size="3" face="Calibri"&gt;more than 100 FREE applications&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;font size="3" face="Calibri"&gt; directly via our Control Panel in 1 minute!&lt;br /&gt;&lt;br /&gt;Happy hosting!&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin:0in 0in 10pt;" class="MsoNormal"&gt;&lt;p&gt;&lt;font size="3" face="Calibri"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx&amp;amp;;subject=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+%e2%80%93+This+collection+already+contains+an+address+with+scheme+http" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+%e2%80%93+This+collection+already+contains+an+address+with+scheme+http" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx&amp;amp;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+%e2%80%93+This+collection+already+contains+an+address+with+scheme+http" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+%e2%80%93+This+collection+already+contains+an+address+with+scheme+http" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx&amp;amp;;title=WCF+RIA+Service+Hosting+%3a%3a+Error+Message+%e2%80%93+This+collection+already+contains+an+address+with+scheme+http&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/2010/02/23/WCF-RIA-Service-Hosting-_3A003A00_-Error-Message-_1320_-This-collection-already-contains-an-address-with-scheme-http.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=59961" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ASPHostCentral/default.aspx">ASPHostCentral</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/asphostcentral.com/default.aspx">asphostcentral.com</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/silverlight+3+hosting/default.aspx">silverlight 3 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/silverlight+4+hosting/default.aspx">silverlight 4 hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/wcf+hosting/default.aspx">wcf hosting</category><category domain="http://aspadvice.com/blogs/asphostcentralcom_aspnet_host/archive/tags/ria+hosting/default.aspx">ria hosting</category></item></channel></rss>