<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;Dk8ERnY6fSp7ImA9WhRRFEQ.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718</id><updated>2011-11-28T10:40:07.815-05:00</updated><category term="XLST" /><category term="Vista" /><category term="Visual Studio" /><category term="Expression Encoder" /><category term="MVC" /><category term="javascript" /><category term="Local database cache" /><category term="Expression Design" /><category term="profiler" /><category term=".Net" /><category term="Expression Blend" /><category term="UI" /><category term="benchmark" /><category term="Remote Desktop" /><category term="Security" /><category term="Azure" /><category term="Ajax" /><category term="XAML" /><category term="SSMS" /><category term="Testing" /><category term="Community" /><category term="PowerShell" /><category term="Leadership" /><category term="Backup" /><category term="performance" /><category term="NUFW" /><category term="Virtualization" /><category term="Video" /><category term="Professional Development" /><category term="hardware" /><category term="LINQ" /><category term="baseline" /><category term="math" /><category term="Microsoft Office" /><category term="SQL CE" /><category term="CSS" /><category term="keyboard encoder module" /><category term="Data Mining" /><category term="WP7" /><category term="Hyper-V" /><category term="XML" /><category term="data conversion" /><category term="I/O Device" /><category term="IIS" /><category term="Reporting Services" /><category term="sql server" /><category term="PASS" /><category term="NuGet" /><category term="WCF" /><category term="databinding" /><category term="reference" /><category term="BI" /><category term="Sync Framework" /><category term="Continuous Improvement" /><category term="Software Quality" /><category term="Server 2008" /><category term="Training" /><category term="WPF" /><category term="Entity Framework" /><category term="Silverlight" /><category term="Excel" /><category term="Utilities" /><title>Dean's Development Cube</title><subtitle type="html">.Net, SQL Server, WPF, Silverlight, and other related technologies</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/DeansDevelopmentCube" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="deansdevelopmentcube" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DE4CSH09fCp7ImA9WhRSGUQ.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-2094427826677012138</id><published>2011-11-22T16:19:00.001-05:00</published><updated>2011-11-22T16:22:49.364-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-22T16:22:49.364-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Troubleshooting Relative URI’s in Silverlight Projects</title><content type="html">&lt;p&gt;My Visual Studio Solution contains a minimum of a project for the Silverlight application and a project for the web page that hosts the Silverlight application. The Silverlight application reads and rights files to the local file system. &lt;/p&gt; &lt;p&gt;The solution is structured similar to this:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;mySolution&lt;/strong&gt; (has a minimum of the following two projects)&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;MyApplication.Web&lt;/strong&gt; - the project that hosts the Silverlight xap file (could be a simple index.html page and Silverlight.js javascript page)  &lt;li&gt;&lt;strong&gt;MyApplication&lt;/strong&gt; - the Silverlight application project&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;When debugging in Visual Studio, the files that the Silverlight application is trying to read from are not necessarily available to the application depending on how you structure the application and which project you put the data files into initially.&lt;/p&gt; &lt;p&gt;While under development, intuition may lead you to believe that if it is the Silverlight application that is actually reading the files, the Data folder should be placed in the Silverlight application project root, not the web project. That would be incorrect.&lt;/p&gt; &lt;h4&gt;Example 1&lt;/h4&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080"&gt;"/Data/ReadThisFile.xml"&lt;/span&gt;, UriKind.Relative)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;UriKind.Relative with a leading slash (/) in front of the Data folder is relative to the page that is hosting the XAP file. In my solution this is the project root of the web application, not the Silverlight project. The data file would be located at f:\mySolution\myApplication.Web\Data\ReadThisFile.xml&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Example 2&lt;/h4&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(&lt;span style="color: #006080"&gt;"Data/ReadThisFile.xml"&lt;/span&gt;, UriKind.Relative)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;Without the leading slash in front of the Data folder as in this example, the file is expected to be relative to the Silverlight xap file. In my solution the xap file is in the default location, the ClientBin folder, which is a sub folder of the project root of the web application. The data file in this case would be located at f:\mySolution\myApplication.Web\ClientBin\Data\ReadThisFile.xml &lt;br /&gt;&lt;h4&gt;&lt;/h4&gt;&lt;br /&gt;&lt;h4&gt;Troubleshooting with Process Monitor&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;If you are getting File not found exceptions, the file isn’t where your application thought it was supposed to be. A relatively easy way to find out where the application is looking for the file is to use &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062" target="_blank"&gt;SysInternals&lt;/a&gt;&amp;nbsp;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645" target="_blank"&gt;Process Monitor&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once you install and run the Process Monitor, you can set the filters to narrow down the captured events to locate the path to the file. The primary filters I used were “Result is not SUCCESS” and “Path contains ReadThisFile.xml”&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://lh4.ggpht.com/-SBPnuHk0Qws/TswR09dsE7I/AAAAAAAAAdo/Ooa2wGE4UxA/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-uS7RBjEeZR0/TswR1eTmvjI/AAAAAAAAAdw/2sJSW56sXpM/image_thumb%25255B3%25255D.png?imgmax=800" width="372" height="344"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The filtered results would look similar to the following, if the the application throws a File not found type of error. (click to enlarge)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-IqOL60ConpA/TswR1kHxvVI/AAAAAAAAAd4/3uNN8_iHfe8/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-xy5y3NlWxto/TswR1zvhZsI/AAAAAAAAAeA/doVohUlLRgY/image_thumb%25255B5%25255D.png?imgmax=800" width="416" height="82"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-2094427826677012138?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/2094427826677012138/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=2094427826677012138" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/2094427826677012138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/2094427826677012138?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/11/my-visual-studio-solution-contains.html" title="Troubleshooting Relative URI’s in Silverlight Projects" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-uS7RBjEeZR0/TswR1eTmvjI/AAAAAAAAAdw/2sJSW56sXpM/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;Ak8DRXw4fip7ImA9WhRSGEU.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-9167821710015843807</id><published>2011-11-21T10:21:00.001-05:00</published><updated>2011-11-21T10:21:14.236-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T10:21:14.236-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Could not load file or assembly System.IdentityModel</title><content type="html">&lt;p&gt;I added functionality to a Silverlight application I created several months ago and when I attempted to run it in debug mode, I received this error:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;font style="font-weight: normal"&gt;Could not load file or assembly 'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&lt;b&gt;Exception Details: &lt;/b&gt;System.IO.FileNotFoundException: Could not load file or assembly 'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I found very little evidence of why I was getting this error now. My search results did not turn up much useful information either. I did find this &lt;a href="http://stackoverflow.com/questions/3417257/inexplicable-assembly-load-in-wcf-service-iis-7" target="_blank"&gt;link on Stack Overflow&lt;/a&gt;, so on a whim I revised the web.config of the web project that hosts the Silverlight application to a add a clear statement to the assemblies node.&lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;configuration&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &amp;lt;system.web&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &amp;lt;compilation debug=&lt;span style="color: #006080"&gt;"true"&lt;/span&gt; targetFramework=&lt;span style="color: #006080"&gt;"4.0"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &amp;lt;assemblies&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          &amp;lt;clear/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &amp;lt;/assemblies&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;      &amp;lt;/compilation&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &amp;lt;/system.web&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;After making that change, the assembly loads without errors. This was on my development workstation. The application did not throw any errors on the production server after publishing it without the clear statement in the web.config.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-9167821710015843807?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/9167821710015843807/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=9167821710015843807" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/9167821710015843807?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/9167821710015843807?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/11/i-added-functionality-to-silverlight.html" title="Could not load file or assembly System.IdentityModel" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A08MQn09fCp7ImA9WhdaFk4.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-1077953973975860896</id><published>2011-10-26T10:36:00.001-04:00</published><updated>2011-10-26T10:38:03.364-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-26T10:38:03.364-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Leadership" /><category scheme="http://www.blogger.com/atom/ns#" term="Training" /><category scheme="http://www.blogger.com/atom/ns#" term="PASS" /><category scheme="http://www.blogger.com/atom/ns#" term="Professional Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><title>10 Reasons to Join a PASS or .Net User Group</title><content type="html">&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-xUZbEOH1MVo/TqgbAwrnPBI/AAAAAAAAAdI/vG7G6jYSkJ4/s1600-h/user-group%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="user group" border="0" alt="user group" align="right" src="http://lh6.ggpht.com/-jJ80uAblVxM/TqgbBBJNWEI/AAAAAAAAAdQ/qsj9enqkMSU/user-group_thumb%25255B1%25255D.jpg?imgmax=800" width="244" height="124"&gt;&lt;/a&gt;I am a member and leader at multiple chapters of technology-based international professional associations, like &lt;a href="http://sqlpass.org" target="_blank"&gt;PASS&lt;/a&gt; (Professional Association for SQL Server) and &lt;a href="http://ineta.org" target="_blank"&gt;INETA&lt;/a&gt;. Through that affiliation, I have experienced many, many benefits that such a small percentage of our industry takes advantage of.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Great people – Attendees, speakers, organizers, volunteers, sponsors, and venue hosts. Attend regularly and I promise you will make life long friends.&lt;/li&gt; &lt;li&gt;A place to talk shop with peers, learn about other organizations and practices, scope out job opportunities, help others with their challenges, and mentor people new to the field.&lt;/li&gt; &lt;li&gt;Great content – free training, new technology previews, and deep dives into specific topics.&lt;/li&gt; &lt;li&gt;Access to experts – speakers almost always provide their contact info and give you permission to ask questions outside of the presentation. Get help on your challenges from other attendees during the social networking time. Sometimes you even get to meet Industry celebrities and national conference presenters, such as &lt;a href="http://brentozar.com" target="_blank"&gt;Brent Ozar&lt;/a&gt;, &lt;a href="http://www.bradmcgehee.com/" target="_blank"&gt;Brad McGehee&lt;/a&gt;, and &lt;a href="http://weblogs.asp.net/scottgu/" target="_blank"&gt;Scott Guthrie&lt;/a&gt;.&lt;/li&gt; &lt;li&gt;Food and beverage&lt;/li&gt; &lt;li&gt;Free swag – books, software (Development software, Operating Systems, 3rd party tools, Xbox games, and more), hardware (keyboards, mice, web cams, etc.), training vouchers, discount coupons, quirky and unusual items (such as &lt;a href="http://www.getbuckyballs.com/" target="_blank"&gt;Bucky Balls&lt;/a&gt;),&amp;nbsp; travel mugs, tote bags, back packs, and the list goes on.&lt;/li&gt; &lt;li&gt;News and announcements about other events and happenings in the industry – training conferences like the &lt;a href="http://www.sqlpass.org/Events/PASSSummit.aspx" target="_blank"&gt;PASS Summit&lt;/a&gt; and &lt;a href="http://sqlcruise.com/" target="_blank"&gt;SQL Cruise&lt;/a&gt;, all day training opportunities, such as &lt;a href="http://dodn.org/" target="_blank"&gt;Day of .Net&lt;/a&gt;, &lt;a href="http://codemash.org/" target="_blank"&gt;Codemash&lt;/a&gt;, &lt;a href="http://sqlsaturday.com/" target="_blank"&gt;SQL Saturday&lt;/a&gt;, virtual training events, contests, free eBooks promotions, Job opportunities.&lt;/li&gt; &lt;li&gt;Save money travelling to regional training or events by carpooling with your fellow user group friends.&lt;/li&gt; &lt;li&gt;Opportunities to present – show off your own proficiency in your craft, get experience to prepare you to speak on regional or national level, establish credibility as a teacher/communicator.&lt;/li&gt; &lt;li&gt;Opportunities to be a board member or volunteer to hone your leadership and logistical skills enhances your career marketability. Also, volunteering or leading a local chapter or regional event is great way to prepare you to become a board member on a national scale, if that is of interest to you.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Really there are few reasons &lt;em&gt;not&lt;/em&gt; to attend, join, volunteer, or lead a professional organization. If you’re interested in professional organizations in general, read my popular post about &lt;a href="http://practicalhoshin.blogspot.com/2010/02/ten-reasons-to-join-professional.html" target="_blank"&gt;10 reasons to join a professional association&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;What have I missed?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-1077953973975860896?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/1077953973975860896/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=1077953973975860896" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1077953973975860896?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1077953973975860896?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/10/top-10-reasons-to-join-pass-or-net-user.html" title="10 Reasons to Join a PASS or .Net User Group" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-jJ80uAblVxM/TqgbBBJNWEI/AAAAAAAAAdQ/qsj9enqkMSU/s72-c/user-group_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQBQ3szfSp7ImA9WhdbFU4.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-5187490727681202510</id><published>2011-10-13T16:37:00.001-04:00</published><updated>2011-10-13T16:39:12.585-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-13T16:39:12.585-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSMS" /><category scheme="http://www.blogger.com/atom/ns#" term="Testing" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><title>SQL Server Compatibility Level Testing</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/somegeekintn/3252569621/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="upgrading technology" border="0" alt="upgrading technology" align="right" src="http://lh3.ggpht.com/-ClrvGJFQ4CQ/TpdMEaW6riI/AAAAAAAAAc8/AmsUoNCH3-U/3252569621_2bb45819dc_m-old-portable-pc%25255B3%25255D.jpg?imgmax=800" width="244" height="164"&gt;&lt;/a&gt;I stumbled on interesting version compatibility issues while working with a database in SQL Server 2008R2. The database was originally developed in SQL Server 2000. It was upgraded to MSSQL 2008R2 as a part of a virtualization initiative, however, the Compatibility Level was still set to 80 (MSSQL 2000).&lt;/p&gt; &lt;p&gt;After seeing columns of type VARCHAR(MAX), it got me wondering about compatibility issues since there was no VARCHAR(MAX) in 2000. &lt;/p&gt; &lt;h4&gt;Anomaly #1&lt;/h4&gt; &lt;p&gt;Doing some research I found this post with a script for &lt;a title="http://www.sqlservercentral.com/scripts/Compatibility/62093/" href="http://www.sqlservercentral.com/scripts/Compatibility/62093/" target="_blank"&gt;Testing all procs before upgrading to Compatibility Level 90&lt;/a&gt;. I ran it on the database (while still set to Compatibility Level 80) and it reported a stored procedure that had a syntax error that was not caught by the syntax checker in MSSQL 2000, 2005, or 2008R2. The SQL is below:&lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;     ChangeLogID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , CourseID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , RecordID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , RecordTable&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , ChangeType&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , ModifiedDateTime&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , ModifiedByEmpNo&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , &lt;span style="color: #0000ff"&gt;CASE&lt;/span&gt; RecordTable &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;WHEN&lt;/span&gt; &lt;span style="color: #008000"&gt;'Course' THEN&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        ( &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; CourseName &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          FROM Course &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          WHERE CourseID = cl.CourseID)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;WHEN&lt;/span&gt; &lt;span style="color: #008000"&gt;'Lesson' THEN&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        ( &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; LessonName &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          FROM Lesson &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          WHERE LessonID = cl.LessonID)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;         &lt;span style="color: #0000ff"&gt;WHEN&lt;/span&gt; &lt;span style="color: #008000"&gt;'Content' THEN&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        ( &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; ContentName &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          FROM Content &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;          WHERE ContentID = cl.ContentID)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;ELSE&lt;/span&gt; &lt;span style="color: #006080"&gt;&lt;font style="background-color: #ffff00"&gt;"None"&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;END&lt;/span&gt; &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; RecordName&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;FROM         ChangeLog cl&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;WHERE     (CourseID = @CourseID)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The error message was: &lt;font face="Courier New"&gt;Invalid column name 'None'&lt;/font&gt;. Note the quotation marks around “None” after the ELSE. Strangely, the stored procedure executes without error. It only detects the syntax error on CREATE, not when I ALTER the stored procedure.&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Anomaly #2&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Using the same database described above, the compatibility error detection script I used (while still having a Compatibility Level of 80) did not detect the error: &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;Msg 8127, Level 16, State 1, Procedure GetNextLessonForLessonNo, Line 49&lt;br&gt;Column "Lesson.LessonNo" is invalid in the ORDER BY clause because it is not contained in either an aggregate function or the GROUP BY clause.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The SQL generating this error is:&lt;/p&gt;&lt;font face="Courier New"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;     TOP 1 MIN(L.LessonNo) &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; LessonNo&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.LessonID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.CourseID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.LessonName&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.LessonDesc&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , COUNT(Content.ContentID) &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; NContentPages&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;FROM     Course C &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;         INNER JOIN Lesson L &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; C.CourseID = L.CourseID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;         LEFT OUTER JOIN Content &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; L.LessonID = Content.LessonID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;WHERE     (L.LessonNo &amp;gt; @LessonNo &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;       &lt;span style="color: #0000ff"&gt;AND&lt;/span&gt; L.CourseID = @CourseID)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;GROUP BY L.LessonID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.CourseID&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.LessonName&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , L.LessonDesc&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;ORDER BY L.LessonNo&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Verdana"&gt;This error is not detected in SSMS (in a query window, or by running the detection script) until the Database Compatibility Level is changed from 80 (MSSQL 2000) to 100 (MSSQL 2008). The issue can be resolved in SQL Server 2008 by adding L.LessonNo to the GROUP BY clause.&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/somegeekintn/3252569621/" target="_blank"&gt;somegeekintn&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by/2.0/deed.en" target="_blank"&gt;CC BY 2.0&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-5187490727681202510?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/5187490727681202510/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=5187490727681202510" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5187490727681202510?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5187490727681202510?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/10/sql-server-compatibility-level-testing.html" title="SQL Server Compatibility Level Testing" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-ClrvGJFQ4CQ/TpdMEaW6riI/AAAAAAAAAc8/AmsUoNCH3-U/s72-c/3252569621_2bb45819dc_m-old-portable-pc%25255B3%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUQMQX89fCp7ImA9WhdUEUk.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-1043722362305665922</id><published>2011-09-27T13:07:00.001-04:00</published><updated>2011-09-27T13:09:40.164-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-27T13:09:40.164-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="CSS" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Image button link options in ASP.Net MVC3</title><content type="html">&lt;p&gt;There are several ways to skin this cat, but below are a couple options for using an image, in lieu of text, as a link to content. There are other overloads for the Url.Action and the Html.ActionLink, but in this example I was linking to a different controller passing in the integer id of the item to display a list of child records. The "STEPS” image is displayed if the parent record has child records.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-QcF0pDncBf0/ToICx-ywKZI/AAAAAAAAAc0/ylP2A1Xji_o/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-jucDavVkLgg/ToICybMdnLI/AAAAAAAAAc4/iV_OcKfe8YM/image_thumb.png?imgmax=800" width="244" height="207"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Url.Action method&lt;/h4&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;a href='@Url.Action(&lt;span style="color: #006080"&gt;"ActionName"&lt;/span&gt;, &lt;span style="color: #006080"&gt;"ControllerName"&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; {Id = item.ID}) '&amp;gt;&amp;lt;img src='@Url.Content(&lt;span style="color: #006080"&gt;"~/Content/Images/buttonimage.gif"&lt;/span&gt;) ' alt=&lt;span style="color: #006080"&gt;"View Detail"&lt;/span&gt; border=&lt;span style="color: #006080"&gt;"0"&lt;/span&gt;  /&amp;gt;&amp;lt;/a&amp;gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4&gt;Html.ActionLink method&lt;/h4&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;@Html.ActionLink(&lt;span style="color: #006080"&gt;" "&lt;/span&gt;, &lt;span style="color: #006080"&gt;"ActionName"&lt;/span&gt;, &lt;span style="color: #006080"&gt;"ControllerName"&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; { Id = item.ID }, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; { @&lt;span style="color: #0000ff"&gt;class&lt;/span&gt; = &lt;span style="color: #006080"&gt;"steps-button"&lt;/span&gt;, alt = &lt;span style="color: #006080"&gt;"View Detail"&lt;/span&gt;, title = &lt;span style="color: #006080"&gt;"View Detail"&lt;/span&gt; })&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Note that the first parameter in the action link is a space (because I didn’t want any text to show over the button background image) and the first argument cannot be null or empty.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the site CSS layout I added the following steps-button class that adds the image to the link as a background image.&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;a.steps-button      &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    background: url(../Content/Images/buttonimage.gif) no-repeat top left; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    width: 14px;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    height: 44px; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    display: block;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-1043722362305665922?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/1043722362305665922/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=1043722362305665922" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1043722362305665922?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1043722362305665922?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/09/image-button-link-options-in-aspnet-mvc.html" title="Image button link options in ASP.Net MVC3" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-jucDavVkLgg/ToICybMdnLI/AAAAAAAAAc4/iV_OcKfe8YM/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU8BQXwzeip7ImA9WhdVEEw.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-3339319078526747082</id><published>2011-09-14T12:26:00.001-04:00</published><updated>2011-09-14T12:30:50.282-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-14T12:30:50.282-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="IIS" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Using jQuery datepicker with MVC3 textboxes</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-9B-aMUXlzEA/TnDVwFZZa2I/AAAAAAAAAb0/S6_8ZPSLyQ0/s1600-h/3923232492_25892585cc-date-picker%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Pick a date" border="0" alt="Pick a date" align="right" src="http://lh5.ggpht.com/-w4gxBaxoYfU/TnDVwe9LY6I/AAAAAAAAAb4/KrZ0eQ1nDxg/3923232492_25892585cc-date-picker_thumb%25255B1%25255D.jpg?imgmax=800" width="244" height="139"&gt;&lt;/a&gt;This post addresses two issues:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Using the built-in ASP.NET Development Server vs. IIS to render the datepicker. If you are using IIS, skip to the second section.  &lt;li&gt;Dependencies necessary to get the &lt;a href="http://jqueryui.com/demos/datepicker/" target="_blank"&gt;jquery ui datepicker&lt;/a&gt; to work in an MVC3 project.&lt;/li&gt;&lt;/ol&gt; &lt;h4&gt;ASP.NET Development Server&lt;/h4&gt; &lt;p&gt;I repeatedly have issues with AJAX controls (like the &lt;a href="http://dean-o.blogspot.com/2010/11/ajax-control-toolkit-modal-popup-css.html" target="_blank"&gt;ModalPopup&lt;/a&gt; control) rendering with the correct styles using the ASP.NET Development Server vs. IIS. The jquery datepicker is no exception, but this time it surfaces as the following error “Microsoft JScript runtime error: Object doesn't support this property or method” in the jquery-1.5.1.min.js, which isn’t very helpful for troubleshooting.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hfEoMcra1aA/TnDVwmXLPUI/AAAAAAAAAb8/0zPMZ8Zic6I/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-llvbljul7pk/TnDVxOgwa-I/AAAAAAAAAcA/CxdVWRLBgs4/image_thumb%25255B2%25255D.png?imgmax=800" width="404" height="133"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;On a hunch, I decided to configure the project as an application in IIS and access it via localhost/appname instead of the dynamically addressed port of the ASP.NET Development Server - giving me a more meaningful error to troubleshoot.&lt;/p&gt; &lt;h4&gt;jQuery UI dependencies&lt;/h4&gt; &lt;p&gt;Using the IIS served application, I received the tiny warning triangle in the lower left corner of IE that indicates a javascript error, “Message: Object doesn't support this property or method”. The offending line of code was $("#EstDateStarted").datepicker();.&lt;/p&gt; &lt;p&gt;My project was based on the standard Visual Studio 2010 MVC3 project template which included only the jquery-1.5.1.min.js in the _Layout.cshtml file using the Razor rendering engine. The .datepicker function is not located in that javascript file it is in the jquery-ui-1.8.11.min.js file. All I needed do to enable that functionality and resolve the error was to add the following reference to the head of the _Layout.cshtml file, which includes it on all the pages of the app:&lt;/p&gt; &lt;p&gt;&amp;lt;script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"&amp;gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-lAAAxYBx5MY/TnDVxRMDPjI/AAAAAAAAAcE/2AQxke4nABY/s1600-h/image%25255B13%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="jquery ui datepicker" border="0" alt="jquery ui datepicker" src="http://lh4.ggpht.com/-f1kCLcjm_S0/TnDVxi8B_AI/AAAAAAAAAcI/4kerZScKv08/image_thumb%25255B9%25255D.png?imgmax=800" width="258" height="235"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/qilin/3923232492/" target="_blank"&gt;augapfel&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" target="_blank"&gt;CC BY-SA 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-3339319078526747082?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/3339319078526747082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=3339319078526747082" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/3339319078526747082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/3339319078526747082?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/09/using-jquery-datepicker-with-mvc3.html" title="Using jQuery datepicker with MVC3 textboxes" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-w4gxBaxoYfU/TnDVwe9LY6I/AAAAAAAAAb4/KrZ0eQ1nDxg/s72-c/3923232492_25892585cc-date-picker_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04DSXs9fip7ImA9WhdSGEg.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-8660592943338492432</id><published>2011-07-28T08:11:00.001-04:00</published><updated>2011-07-28T08:26:18.566-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-28T08:26:18.566-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Testing" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Quality" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>New App Hub Features Still Need Work</title><content type="html">&lt;p&gt;&lt;a href="http://leanbites.blogspot.com/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="LeanBites200" border="0" alt="LeanBites200" align="right" src="http://lh4.ggpht.com/-fUrTthvuZKs/TjFS8bM5N3I/AAAAAAAAAbA/tArIfnFg-_0/LeanBites200%25255B4%25255D.png?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;The July 18 Marketplace updates look like they still need some tweaking. I updated one of my apps and set the publish status to “hide” after certification. After app certification approval, for&amp;#160; some reason, it showed an update to the app on my phone (doesn’t seem hidden to me). I updated the app to the new version, and the splash screen was updated, but the icons were not updated and the application just showed a “My Application” header at the top of the page with no app content at all.&lt;/p&gt;  &lt;p&gt;I thought maybe that was the result of the “Hide” status. So I un-hid the app in the marketplace. It didn’t prompt another update so I uninstalled the app from my phone. When I searched in the marketplace for my app to reinstall, it could not be found.&lt;/p&gt;  &lt;p&gt;In order to reinstall the app, I had to navigate to my &lt;a href="http://leanbites.blogspot.com/" target="_blank"&gt;Lean Bites website&lt;/a&gt; on my phone and click the &lt;a href="http://social.zune.net/External/LaunchZuneProtocol.aspx?pathuri=navigate%3FphoneAppID%3D010533eb-207f-e011-986b-78e7d1fa76f8" target="_blank"&gt;Zune Marketplace deep link&lt;/a&gt; in the right column of the website. After following that procedure, the app installed and is working correctly again with the new updated version.&lt;/p&gt;  &lt;p&gt;I hope Microsoft gets these issues worked out before the consumer frustration gets to a new high and it doesn’t make my app look like it’s the problem. With so much riding on the new Windows Phone platform, it is unfortunate to see them stumbling over issues that probably should have surfaced in beta testing.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-8660592943338492432?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/8660592943338492432/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=8660592943338492432" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/8660592943338492432?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/8660592943338492432?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/07/new-app-hub-features-still-need-work.html" title="New App Hub Features Still Need Work" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-fUrTthvuZKs/TjFS8bM5N3I/AAAAAAAAAbA/tArIfnFg-_0/s72-c/LeanBites200%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkUMRHw6eCp7ImA9WhdSE0g.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-5657932195713149878</id><published>2011-07-22T11:10:00.001-04:00</published><updated>2011-07-22T11:58:05.210-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-22T11:58:05.210-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>EF “Code-First” Table Mappings for Existing Database</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/aaronharmon/113589914/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Table Map" border="0" alt="Table Map" align="right" src="http://lh4.ggpht.com/-XboTon160d4/Timb5hRkspI/AAAAAAAAAaw/71GUhg4-UBQ/113589914_2888664fc4_m_map-table%25255B4%25255D.jpg?imgmax=800" width="204" height="154"&gt;&lt;/a&gt;If you are using the &lt;a href="http://nuget.org/List/Packages/MvcScaffolding" target="_blank"&gt;MvcScaffolding&lt;/a&gt; package to scaffold the tables from an existing database and it throws an exception on the following line of the index.cshtml page. (The exception would show up in a different location on other data access pages).&lt;/p&gt; &lt;div&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;@foreach (var item &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; Model) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If the exception is of type System.Data.EntityCommandExecutionException where the inner exception is something to the effect of “Invalid object name ‘dbo.Ranks” where the actual database table name is the singular form like dbo.Rank, you probably need to explicitly define the table schema mappings in the OnModelCreating event of the context class because the existing database table names don’t match the default Entity Framework Convention over Configuration settings. &lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; LPM.Models&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; LPMContext : DbContext&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; DbSet&amp;lt;LPM.Status&amp;gt; Status { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; DbSet&amp;lt;LPM.Rank&amp;gt; Ranks { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; override void OnModelCreating(DbModelBuilder modelBuilder)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            modelBuilder.Entity&amp;lt;Rank&amp;gt;().ToTable(&lt;span style="color: #006080"&gt;"Rank"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you use SQL Profiler to trace the T-SQL statement issued by the application, you can see it was attempting to retrieve data from the [dbo].[Rank&lt;font style="background-color: #ffff00"&gt;s&lt;/font&gt;] table which doesn’t exist. In my database it is [dbo].[Rank].&lt;/div&gt;&lt;br /&gt;&lt;p&gt;SELECT &lt;br&gt;[Extent1].[ID] AS [ID], &lt;br&gt;[Extent1].[RankNo] AS [RankNo], &lt;br&gt;[Extent1].[RankDescription] AS [RankDescription]&lt;br&gt;FROM [dbo].[&lt;font style="background-color: #ffff00"&gt;Ranks&lt;/font&gt;] AS [Extent1]&lt;/p&gt;&lt;br /&gt;&lt;div&gt;This stumped me initially because the first table I used as a test was the “Status” table which by convention has the same name in the singular and plural form. So no exceptions where thrown and I could list, insert, update, and delete the records. After I updated the model from the database and added the Rank table, exceptions started flying until I added the modelBuilder.Entity&amp;lt;Rank&amp;gt;().ToTable(“Rank”) line in the OnModelCreating event.&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Scott Guthrie’s &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/07/23/entity-framework-4-code-first-custom-database-schema-mapping.aspx" target="_blank"&gt;Entity Framework 4 “Code-First”: Custom Database Schema Mapping&lt;/a&gt; has additional examples with more complex mapping scenarios.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/aaronharmon/113589914/" target="_blank"&gt;aaron13251&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by/2.0/deed.en" target="_blank"&gt;CC BY 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-5657932195713149878?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/5657932195713149878/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=5657932195713149878" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5657932195713149878?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5657932195713149878?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/07/ef-code-first-table-mappings-for.html" title="EF “Code-First” Table Mappings for Existing Database" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-XboTon160d4/Timb5hRkspI/AAAAAAAAAaw/71GUhg4-UBQ/s72-c/113589914_2888664fc4_m_map-table%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUAGRHY5fCp7ImA9WhdSEko.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-8247871124254847020</id><published>2011-07-21T11:50:00.001-04:00</published><updated>2011-07-21T14:42:05.824-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-21T14:42:05.824-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SSMS" /><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="profiler" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>MvcScaffolding uses SQL Express by Default</title><content type="html">&lt;p&gt;&lt;a title="Where's Waldo?" href="http://www.flickr.com/photos/silvery/2414538926/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Where's Waldo" border="0" alt="Where's Waldo" align="right" src="http://lh5.ggpht.com/-bjfv1UWsmhE/TihZdZ77-0I/AAAAAAAAAao/_RislKjO7Tg/2414538926_3d80e76f73_m_wheres-waldo%25255B4%25255D.jpg?imgmax=800" width="204" height="155"&gt;&lt;/a&gt;The fact that the &lt;a href="http://nuget.org/List/Packages/MvcScaffolding" target="_blank"&gt;MvcScaffolding&lt;/a&gt; package uses SQL Express by default can be both good and deceiving at the same time.&lt;/p&gt; &lt;h4&gt;Using an Existing Database (not Code-First)&lt;/h4&gt; &lt;p&gt;I used the package on a MVC3 project to scaffold the repository models and controllers for an existing SQL Server Standard database (not SQL Express) that had an existing Ado.Net Entity Framework model. The EF connection string obviously pointed to the existing database. However when running the application, the Index pages didn’t list any of the existing data from my database. &lt;/p&gt; &lt;p&gt;If this looks like the same problem you are having, feel free to skip to the bottom for the solution (convention over configuration).&lt;/p&gt; &lt;h4&gt;Where’s the data?&lt;/h4&gt; &lt;p&gt;I could add records, but they didn’t show up in the existing database. There was no Express database .mdf file in the application’s App_Data folder. There were no additional&amp;nbsp; connection strings (other than the EF connection to the existing database) in the web.config files or any of the dbcontext class files. I profiled the existing database with SQL Profiler and the existing database was completely untouched. I even added a &amp;lt;remove name=”LPMEntities” /&amp;gt; line before the EF connection string to make sure any default connection from the server root or machine.config was taken out of the inheritance tree (similar to what you would do for the &lt;a href="http://dean-o.blogspot.com/2010/11/aspnet-mystery-membership-database.html"&gt;aspnetdb membership database&lt;/a&gt; if you are using a full SQL Server instance). &lt;/p&gt; &lt;p&gt;The new data was being stored somewhere, but where? In a newly created SQL Express database.&lt;/p&gt; &lt;h4&gt;How do I See the Data?&lt;/h4&gt; &lt;p&gt;Open your SQL Server Management Studio (SSMS) or the version of SSMS for SQL Express. In the Object Explorer window, click Connect. Use .\sqlexpress as the server to connect to using Windows Authentication and voila the new mysterious “hidden” database.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-7P2EhNATh8c/TihK0vr4GWI/AAAAAAAAAag/zqXkN-oJ-RQ/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SqlExpress MvcScaffolding package generated database" border="0" alt="SqlExpress MvcScaffolding package generated database" src="http://lh6.ggpht.com/-8mp0jRUGmZ8/TihK1Qt0RUI/AAAAAAAAAak/_v1Cx9W1qgI/image_thumb%25255B1%25255D.png?imgmax=800" width="286" height="384"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I hope this helps to clarify for other people attempting to use the MvcScaffoling in a Database-First scenario.&lt;/p&gt; &lt;h4&gt;The Solution – Understand the Convention over Configuration&lt;/h4&gt; &lt;p&gt;It took me a while to find a small subtle, yet crucial, detail in Scott Guthrie’s &lt;a title="Using EF &amp;ldquo;Code First&amp;rdquo; with an Existing Database" href="http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx" target="_blank"&gt;Using EF “Code First” with an Existing Database&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The following note is stated at the end of Step 5 – Configuring our Database Connection String:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;EF “code first” uses a convention where context classes by default look for a connection-string that has the same name as the context class.&amp;nbsp; Because our context class is called “Northwind” it by default looks for a “Northwind” connection-string to use.&amp;nbsp; Above our Northwind connection-string is configured to use a local SQL Express database.&amp;nbsp; You can alternatively point it at a remote SQL Server.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In my case the Entity Framework connection string in the web.config was named “LPMEntities”. The class implementing the DbContext is named LPMContext as shown below. &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; LPM.Models&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; LPMContext : DbContext&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; DbSet&amp;lt;LPM.Type&amp;gt; Types { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        additional stuff here...&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Since LPMEntities is not the context class name, the EF generates a local SQL Express database.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I just added a connection string to the web.config with a name of LPMContext (same name as the context class) and my MVC forms are populated from the existing database.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Victory!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/silvery/2414538926/" target="_blank"&gt;Si1very&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" target="_blank"&gt;CC BY-SA 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-8247871124254847020?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/8247871124254847020/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=8247871124254847020" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/8247871124254847020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/8247871124254847020?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/07/mvcscaffolding-uses-sql-express-by.html" title="MvcScaffolding uses SQL Express by Default" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-bjfv1UWsmhE/TihZdZ77-0I/AAAAAAAAAao/_RislKjO7Tg/s72-c/2414538926_3d80e76f73_m_wheres-waldo%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUQGQnc7cSp7ImA9WhdTF0g.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-5075224372696375771</id><published>2011-07-15T15:06:00.001-04:00</published><updated>2011-07-15T15:15:23.909-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-15T15:15:23.909-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Error using MvcScaffolding with EF4.0</title><content type="html">&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-Be5dld8FetQ/TiCKcuTqiAI/AAAAAAAAAaU/TlfTgBo97aE/s1600-h/scaffolding3.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="scaffolding" border="0" alt="scaffolding" align="right" src="http://lh5.ggpht.com/-IENToPVfrkk/TiCPtS873uI/AAAAAAAAAaY/GCXfjj03k78/scaffolding_thumb1.jpg?imgmax=800" width="204" height="212"&gt;&lt;/a&gt;If you are just starting out with the &lt;a href="http://nuget.org/List/Packages/MvcScaffolding" target="_blank"&gt;MvcScaffolding&lt;/a&gt; &lt;a href="http://nuget.org/" target="_blank"&gt;Nuget&lt;/a&gt; package to scaffold your basic CRUD operations on an MVC3 project, you should know that it requires EF 4.1 to run correctly without the following error.&lt;/p&gt; &lt;p&gt;&lt;i&gt;The type 'LPM.Project' was not mapped. Check that the type has not been explicitly excluded by using the Ignore method or NotMappedAttribute data annotation. Verify that the type was defined as a class, is not primitive, nested or generic, and does not inherit from EntityObject&lt;/i&gt;&lt;/p&gt; &lt;p&gt;If you already ran the scaffolding via the Package Manager Console using syntax similar to the following, &lt;font face="Courier New"&gt;PM&amp;gt;scaffold controller &amp;lt;table&amp;gt; –Repository –Force&lt;/font&gt;&lt;font face="Verdana"&gt;, to resolve the error, I needed to:&lt;/font&gt;&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Delete the scaffolded controller files and view files from the project.  &lt;li&gt;Install the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=8363#system-requirements" target="_blank"&gt;Entity Framework 4.1&lt;/a&gt;  &lt;li&gt;Re-Generate the Database From Model (assuming that is how you created the Entities to begin with) &lt;li&gt;Right click on the .edmx Design surface, click Add Code Generation Item. &lt;li&gt;Click the Code link in the Installed Templates tree. Select ADO.Net DbContext Generator. Name the code generation template, it ends with a .tt extension. &lt;li&gt;Rebuild the project.  &lt;li&gt;Re-scaffold the tables.  &lt;li&gt;Run the project&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Steps 4 &amp;amp; 5 above were the key to getting it to work after installing the Entity Framework 4.1 and with all my combinations of re-scaffolding, re-generating the model, re-creating the model, etc. That important bit of information came from &lt;a title="MVC 3 Scaffolding issue with Entity Framework" href="http://pinakig.wordpress.com/2011/07/03/mvc-3-scaffolding-issue-with-entity-framework/" target="_blank"&gt;MVC 3 Scaffolding issue with Entity Framework&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;If you look at the Model.designer.cs (or .vb) code prior to adding the ADO.Net DbContext Generator, you will see that the Model entities do inherit from the EntityObject (which is noted in the error message as a potential cause of the exception). Adding the ADO.Net DbContext Generator disables the default code generation and inherits from the DbContext instead. &lt;/p&gt; &lt;p&gt;more information:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="Scaffold your ASP.NET MVC 3 project with the MvcScaffolding package" href="http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/" target="_blank"&gt;Scaffold your ASP.NET MVC 3 project with the MvcScaffolding package&lt;/a&gt;  &lt;li&gt;&lt;a title="Entity Framework Scaffolding: The type is not mapped issue" href="http://codepolice.net/2011/05/20/entity-framework-scaffolding-the-type-is-not-mapped-issue/" target="_blank"&gt;Entity Framework Scaffolding: The type is not mapped issue&lt;/a&gt;  &lt;li&gt;&lt;a title="A word of Advice. Don't get EF 4.1 via NuGet" href="http://mvcscaffolding.codeplex.com/discussions/257882" target="_blank"&gt;A word of Advice. Don't get EF 4.1 via NuGet&lt;/a&gt;  &lt;li&gt;&lt;a title="EF 4.1 Code First Walkthrough" href="http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx" target="_blank"&gt;EF 4.1 Code First Walkthrough&lt;/a&gt; – I already had a database so this wasn’t really applicable to my situation.&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-5075224372696375771?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/5075224372696375771/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=5075224372696375771" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5075224372696375771?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5075224372696375771?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/07/error-using-mvcscaffolding-with-ef40.html" title="Error using MvcScaffolding with EF4.0" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-IENToPVfrkk/TiCPtS873uI/AAAAAAAAAaY/GCXfjj03k78/s72-c/scaffolding_thumb1.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DU8FQXoycSp7ImA9WhdTEUk.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-6775323601787294474</id><published>2011-07-08T13:55:00.001-04:00</published><updated>2011-07-08T13:56:50.499-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-08T13:56:50.499-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Virtualization" /><category scheme="http://www.blogger.com/atom/ns#" term="Hyper-V" /><title>Physical to Virtual using SysInternals Disk2VHD</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-jp7b-ZsLLos/ThdEdfC189I/AAAAAAAAAaI/D0tLIzE8Dcg/s1600-h/DSC01301%25255B6%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="Virtual Prehistoric Era" border="0" alt="Virtual Prehistoric Era" align="right" src="http://lh5.ggpht.com/-EJDSuLaVQaQ/ThdEd6UCsxI/AAAAAAAAAaM/vfWagVYk8rk/DSC01301_thumb%25255B3%25255D.jpg?imgmax=800" width="204" height="155"&gt;&lt;/a&gt;The hard drive controller was regularly failing on my source control server. What to do? The server was due for an upgrade soon as its hardware was more or less obsolete and the performance was less than satisfactory. While the controller was still mostly working, I used &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062" target="_blank"&gt;SysInternals&lt;/a&gt; &lt;a href="http://technet.microsoft.com/en-us/sysinternals/ee656415" target="_blank"&gt;Disk2VHD&lt;/a&gt; to create a virtual copy of the physical server. In the interim while waiting on the new Hyper-V server to permanently place it on, I can temporarily run the server in VirtualPC 2007 and with three times more RAM than was available on the physical server.&lt;/p&gt; &lt;p&gt;The process was simple, fast, and seamless. I just had to re-activate the OS after the conversion. Just make sure you activate it before the expiration date which I believe was only 3 days on my copy or it will brick your ability to manage the server from the terminal.&lt;/p&gt; &lt;p&gt;While waiting for copying and converting processes to finish I ran across a few related posts that I thought I might want to reference in the future.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="Are VHD's Compatible between Hyper-V and Virtual Server and Virtual PC" href="http://blogs.technet.com/b/jhoward/archive/2008/02/28/are-vhds-compatible-between-hyper-v-and-virtual-server-and-virtual-pc.aspx"&gt;Are VHD's Compatible between Hyper-V and Virtual Server and Virtual PC&lt;/a&gt;  &lt;li&gt;Vittorio Pavesi's post to &lt;a title="Vittorio Pavesi's post to Convert VHD from Hyper-V to Virtual PC" href="http://vittoriop77.blogspot.com/2009/02/convert-vhd-from-hyper-v-to-virtual-pc.html"&gt;Convert VHD from Hyper-V to Virtual PC&lt;/a&gt; which describes how to overcome the compatibility limitation that prevents using a Hyper-V created VHD in Virtual PC.&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-6775323601787294474?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/6775323601787294474/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=6775323601787294474" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/6775323601787294474?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/6775323601787294474?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/07/physical-to-virtual-using-sysinternals.html" title="Physical to Virtual using SysInternals Disk2VHD" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-EJDSuLaVQaQ/ThdEd6UCsxI/AAAAAAAAAaM/vfWagVYk8rk/s72-c/DSC01301_thumb%25255B3%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUNQHY4fyp7ImA9WhZaGUU.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-2071231418354073279</id><published>2011-07-06T17:17:00.001-04:00</published><updated>2011-07-06T17:21:31.837-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-06T17:21:31.837-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="reference" /><title>Database Primary Key Naming Conventions</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/amboo213/4425564575/" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Train coupling" border="0" alt="Train coupling" align="right" src="http://lh4.ggpht.com/-Z55VCKC1Qcs/ThTQ38xgKGI/AAAAAAAAAaE/IX8VAfJrFuE/4425564575_d72331a274_m_train-coupling%25255B4%25255D.jpg?imgmax=800" width="204" height="136"&gt;&lt;/a&gt;This post specifically deals with the two naming conventions of a primary key for example “Id” or “&amp;lt;tablename&amp;gt;Id".&lt;/p&gt; &lt;p&gt;Using the convention including the tablename prepended to “Id” makes creating and reading SQL query joins more intuitively readable as in:&lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; a.AuthorId&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , a.AuthorName&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , b.BookId&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , b.BookName &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;FROM Author a&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   INNER JOIN Book b &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; b.AuthorId = a.AuthorId&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Versus the alternative using a standard key name, such as “Id" for all tables, as in the following:&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; a.Id &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; AuthorId&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , a.AuthorName&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , b.Id &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; BookId&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    , b.BookName &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;FROM Author a&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   INNER JOIN Book b &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; b.AuthorId = a.Id&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;However it adds additional abstraction/mapping complexity when using a generic &lt;a href="http://msdn.microsoft.com/en-us/library/ff649690.aspx" target="_blank"&gt;Repository pattern&lt;/a&gt;* that uses a standard primary key property name for the Repository base classes and interfaces.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;*The design is possibly more correctly labeled as a DAO pattern depending on the specific implementation.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;photo courtesy: &lt;a href="http://www.flickr.com/photos/amboo213/4425564575/"&gt;amboo who?&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" target="_blank"&gt;CC BY-SA 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-2071231418354073279?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/2071231418354073279/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=2071231418354073279" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/2071231418354073279?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/2071231418354073279?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/07/database-primary-key-naming-conventions.html" title="Database Primary Key Naming Conventions" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-Z55VCKC1Qcs/ThTQ38xgKGI/AAAAAAAAAaE/IX8VAfJrFuE/s72-c/4425564575_d72331a274_m_train-coupling%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUAAQ3w4fip7ImA9WhZUFUs.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-194082785265516782</id><published>2011-06-08T17:15:00.001-04:00</published><updated>2011-06-08T17:15:42.236-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-08T17:15:42.236-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XAML" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Circumventing the uriMappings in Silverlight</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/eirikref/2907558862/" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Redirection chaos" border="0" alt="Redirection chaos" align="right" src="http://lh3.ggpht.com/-f1is_7yTwj8/Te_mfdKG-EI/AAAAAAAAAZ4/JW2qgyB36vc/2907558862_8d4fd63a54_m-intersection-chaos%25255B4%25255D.jpg?imgmax=800" width="204" height="154"&gt;&lt;/a&gt;I created a Silverlight application with the Silverlight Navigation project template that needed to open a link to a PDF file located in a subfolder of the host web application directory. The&amp;nbsp; project has a convenient uriMapping process defined in the MainPage.xaml XAML to provide search engine friendly links to the various Silverlight pages. It is located in the Windows.System.Navigation namespace. It looks something like this:&lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;uriMapper:UriMapper&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &amp;lt;uriMapper:UriMapping Uri=&lt;span style="color: #006080"&gt;""&lt;/span&gt; MappedUri=&lt;span style="color: #006080"&gt;"/Views/Home.xaml"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;   &amp;lt;uriMapper:UriMapping Uri=&lt;span style="color: #006080"&gt;"/{pageName}"&lt;/span&gt; MappedUri=&lt;span style="color: #006080"&gt;"/Views/{pageName}.xaml"&lt;/span&gt;/&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;/uriMapper:UriMapper&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I needed to link to an absolute Url, not a uri relative to the Silverlight app, like &lt;a title="http://www.deanwillson.com/downloads/Continuous-Improvement-professional-Org-1st-Edition.pdf" href="http://www.deanwillson.com/downloads/Continuous-Improvement-professional-Org-1st-Edition.pdf"&gt;http://www.deanwillson.com/downloads/Continuous-Improvement-professional-Org-1st-Edition.pdf&lt;/a&gt;, but if the uriMapper catches that link it attempts to re-map it to a resource that doesn’t exist which generates the following error:&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;“Content for the URI cannot be loaded. The URI may be Invalid”&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h4&gt;Solution&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;In order to accomplish linking outside of the defined uriMappings, I added the link in the XAML of the HyperlinkButton NavigateUri.&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;HyperlinkButton Name=&lt;span style="color: #006080"&gt;"lnkReport"&lt;/span&gt; NavigateUri=&lt;span style="color: #006080"&gt;"http://www.deanwillson.com/downloads/Continuous-Improvement-professional-Org-1st-Edition.pdf"&lt;/span&gt; Content=&lt;span style="color: #006080"&gt;"Click here to open your document"&lt;/span&gt; TargetName=&lt;span style="color: #006080"&gt;"_blank"&lt;/span&gt; Margin=&lt;span style="color: #006080"&gt;"116,11,184,10"&lt;/span&gt; Width=&lt;span style="color: #006080"&gt;"200"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;All this probably looks pretty obvious, but it started with me trying to open the pdf report using code-behind in the clicked event handler for the button, which kept throwing the Invalid Uri exception. I even added a special uriMapping that mapped to the same link, which also did not work.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/eirikref/2907558862/" target="_blank"&gt;eirikref&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by/2.0/deed.en" target="_blank"&gt;CC BY 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-194082785265516782?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/194082785265516782/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=194082785265516782" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/194082785265516782?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/194082785265516782?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/06/circumventing-urimappings-in.html" title="Circumventing the uriMappings in Silverlight" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-f1is_7yTwj8/Te_mfdKG-EI/AAAAAAAAAZ4/JW2qgyB36vc/s72-c/2907558862_8d4fd63a54_m-intersection-chaos%25255B4%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkEESH09cCp7ImA9WhZVE0k.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-6625288000361697203</id><published>2011-05-25T12:21:00.001-04:00</published><updated>2011-05-25T12:23:29.368-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-25T12:23:29.368-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="XAML" /><category scheme="http://www.blogger.com/atom/ns#" term="Azure" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="Entity Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>Creating a Windows Phone 7 app using WCF, and SQL Azure</title><content type="html">&lt;p&gt;Last night I gave a presentation with demos for &lt;a href="http://www.fwpass.org/" target="_blank"&gt;fwPASS&lt;/a&gt; creating a Windows 7 app displaying a list of gymnasts from a SQL Azure database using WCF (Windows Communication Foundation). The WCF service used the Entity Framework and the .Net Membership provider. &lt;/p&gt; &lt;div style="width: 340px" id="__ss_8098678"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Windows phone 7, WCF, and SQL Azure" href="http://www.slideshare.net/DeanWillson/windows-phone-7-wcf-and-sql-azure"&gt;Windows phone 7, WCF, and SQL Azure&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="284" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/8098678?rel=0" frameborder="0" width="340" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/DeanWillson"&gt;Dean Willson&lt;/a&gt; &lt;/div&gt;&lt;/div&gt; &lt;p&gt;The application was surprisingly easy to create despite the fact that were a lot of moving pieces with integration between all the different components. &lt;/p&gt; &lt;p&gt;The presentation covered the following tools:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Windows Phone Marketplace &lt;a href="http://create.msdn.com/en-US/" target="_blank"&gt;App Hub&lt;/a&gt;&amp;nbsp; &lt;li&gt;Visual Studio IDE  &lt;li&gt;SQL Server Management Studio (SSMS)  &lt;li&gt;Windows &lt;a href="http://windows.azure.com" target="_blank"&gt;Azure Platform Management Portal&lt;/a&gt;  &lt;li&gt;&lt;a href="http://sqlazuremw.codeplex.com/" target="_blank"&gt;SQL Azure Migration Wizard&lt;/a&gt;  &lt;li&gt;Windows Phone 7 Emulator&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;All that in 70 minutes. Yes, I talk fast. This was a first time presentation. Below is the demo script I used:&lt;/p&gt; &lt;h4&gt;Marketplace&lt;/h4&gt; &lt;p&gt;1. Preview App Hub &lt;a href="http://create.msdn.com"&gt;http://create.msdn.com&lt;/a&gt;  &lt;p&gt;· Show app details text, iconography  &lt;h4&gt;Database&lt;/h4&gt; &lt;p&gt;1. SSMS – show local &lt;a href="http://chalkchimp.com" target="_blank"&gt;ChalkChimp&lt;/a&gt; database  &lt;p&gt;· Show script for creating additional users?  &lt;p&gt;2. &lt;a href="http://windows.azure.com"&gt;http://windows.azure.com&lt;/a&gt; SQL management interface  &lt;p&gt;· No query designer  &lt;p&gt;3. SQL Azure Migration tool  &lt;p&gt;· Scripts out db  &lt;p&gt;· Shows unsupported features  &lt;p&gt;· deploys  &lt;p&gt;4. Azure limitations in SSMS  &lt;p&gt;· No query designer  &lt;p&gt;· Admin account (other users don’t have access to the master database)  &lt;h4&gt;WCF&lt;/h4&gt; &lt;p&gt;1. Create new project WCF Application  &lt;p&gt;· Highlight Framework version 3.5  &lt;p&gt;· Change binding to basicHTTPBinding  &lt;p&gt;2. New Item à ADO.Net Entity  &lt;p&gt;· Azure connection  &lt;p&gt;3. Switch to finished project  &lt;p&gt;4. Modify Iservice.cs, modify Service.cs implementation  &lt;p&gt;5. Show .Net membership bits in web.config  &lt;p&gt;6. View in browser (copy url)  &lt;h4&gt;WP7 client&lt;/h4&gt; &lt;p&gt;1. Open Visual Studio (another)  &lt;p&gt;2. New Project à Windows Phone 7 application  &lt;p&gt;3. New item à Phone portrait page  &lt;p&gt;4. Add Service reference  &lt;p&gt;· Show service methods  &lt;p&gt;· Advanced show generate async methods  &lt;p&gt;5. Switch to finished project  &lt;p&gt;· Show xaml bindings  &lt;p&gt;· Show async methods and completed event handlers  &lt;p&gt;· switch device to emulator  &lt;p&gt;6. Run it  &lt;h4&gt;Optional&lt;/h4&gt; &lt;p&gt;· Show property pages and &lt;a href="http://dean-o.blogspot.com/2011/03/lessons-learned-in-windows-phone-7.html" target="_blank"&gt;iconography&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8639f9ec-1036-44e7-bb17-87f3598e6863" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Phone+7" rel="tag"&gt;Windows Phone 7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WP7" rel="tag"&gt;WP7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Azure" rel="tag"&gt;SQL Azure&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-6625288000361697203?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/6625288000361697203/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=6625288000361697203" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/6625288000361697203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/6625288000361697203?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/05/creating-windows-phone-7-app-using-wcf.html" title="Creating a Windows Phone 7 app using WCF, and SQL Azure" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A0QNRH08fSp7ImA9WhZWGEQ.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-1962906108263176011</id><published>2011-05-20T09:49:00.001-04:00</published><updated>2011-05-20T09:49:55.375-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T09:49:55.375-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>Download for WP7 Badges</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_-_vZcvroBFE/TdZxgC3TTPI/AAAAAAAAAY8/B1tR0oset8s/s1600-h/image%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://lh5.ggpht.com/_-_vZcvroBFE/TdZxgs1gj1I/AAAAAAAAAZA/Fdz6iWT9ChI/image_thumb%5B1%5D.png?imgmax=800" width="204" height="270"&gt;&lt;/a&gt;Since I never seem to remember where to find the official "Download for Windows Phone 7" Badge and Logos, here is my reminder &lt;a href="http://go.microsoft.com/fwlink/?LinkID=202116"&gt;http://go.microsoft.com/fwlink/?LinkID=202116&lt;/a&gt;.   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-1962906108263176011?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/1962906108263176011/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=1962906108263176011" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1962906108263176011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1962906108263176011?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/05/download-for-wp7-badges.html" title="Download for WP7 Badges" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_-_vZcvroBFE/TdZxgs1gj1I/AAAAAAAAAZA/Fdz6iWT9ChI/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUcDQH8yfCp7ImA9WhZWF0k.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-8531419074852380651</id><published>2011-05-18T15:31:00.001-04:00</published><updated>2011-05-18T15:31:11.194-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-18T15:31:11.194-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="PASS" /><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><title>Do You Have Control of Your Database?</title><content type="html">&lt;p&gt;I prepared the following talking points to facilitate a round table discussion on Database Source Control titled “Do you have [source] control of your database” with a local chapter of Professional Association for SQL Server.&lt;/p&gt; &lt;p&gt;Most software developers use some form of source control for their software code, but it seems less common to take the same precautions with their databases.&lt;/p&gt; &lt;div style="width: 340px" id="__ss_8016140"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Database Source Control" href="http://www.slideshare.net/DeanWillson/database-source-control"&gt;Database Source Control&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="284" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/8016140" frameborder="0" width="340" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/DeanWillson"&gt;Dean Willson&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-8531419074852380651?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/8531419074852380651/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=8531419074852380651" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/8531419074852380651?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/8531419074852380651?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/05/do-you-have-control-of-your-database.html" title="Do You Have Control of Your Database?" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUYAQn47cSp7ImA9WhZWFkk.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-7430844916866058207</id><published>2011-05-17T10:37:00.001-04:00</published><updated>2011-05-17T10:39:03.009-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-17T10:39:03.009-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>Submitting an AppMakr app to the Windows Phone 7 Marketplace</title><content type="html">&lt;p&gt;I made a Windows Phone 7 app using &lt;a href="http://www.appmakr.com" target="_blank"&gt;AppMakr&lt;/a&gt; for &lt;a href="http://leanbites.blogspot.com/" target="_blank"&gt;reading Lean-related content from prominent Lean bloggers&lt;/a&gt;. That was easy, but there didn’t appear to be any instructions for how to get the app added to the &lt;a href="http://create.msdn.com/en-US/" target="_blank"&gt;App Hub&lt;/a&gt;. So here they are.&lt;/p&gt; &lt;p&gt;Log into your AppMakr account. There are a number of ways to get to your build. Either click the “App Builds” link in the top navigation or click the “Builds” button on one of your applications (as shown in the image below).&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_-_vZcvroBFE/TdKIG_69zVI/AAAAAAAAAX4/5pbGhFwB4Mk/s1600-h/image%5B8%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_-_vZcvroBFE/TdKIHVuhnDI/AAAAAAAAAX8/NaLHCG9tUoc/image_thumb%5B4%5D.png?imgmax=800" width="404" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pick the latest build that you want to submit to the marketplace and click the Download App button.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_-_vZcvroBFE/TdKIHY9rIEI/AAAAAAAAAYA/cJhsYF_cdes/s1600-h/image%5B9%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_-_vZcvroBFE/TdKIH1IS-vI/AAAAAAAAAYE/x8_e7nuB154/image_thumb%5B5%5D.png?imgmax=800" width="404" height="248"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You will be presented with a dialog to open or save the zip file. Choose to save it to a location on your PC.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_-_vZcvroBFE/TdKIH61W0QI/AAAAAAAAAYI/qdQl3iqN5oo/s1600-h/image%5B13%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_-_vZcvroBFE/TdKIIYvn9WI/AAAAAAAAAYM/6q7j_yphcmw/image_thumb%5B7%5D.png?imgmax=800" width="294" height="210"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: Rename the file extension from .zip to .xap (which is the Silverlight application package deployment file). You will have to create the necessary &lt;a href="http://dean-o.blogspot.com/2011/03/lessons-learned-in-windows-phone-7.html"&gt;Windows Phone 7 iconography&lt;/a&gt; (icons and screenshots needed for submitting to the app hub). You may be able to use some of the ones you used to create the application in AppMakr.&lt;/p&gt; &lt;p&gt;You will need an App Hub Developer account to submit applications to the Windows Marketplace ($99/year). After you have that, log in and from the “my dashboard” navigation link, select “Windows Phone”. &lt;/p&gt; &lt;p&gt;Click the “submit new app” button.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_-_vZcvroBFE/TdKIIkUxwzI/AAAAAAAAAYQ/jwbKYS5w17o/s1600-h/image%5B21%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_-_vZcvroBFE/TdKIIxvWbDI/AAAAAAAAAYU/Z1Bboe6PNB8/image_thumb%5B11%5D.png?imgmax=800" width="404" height="273"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Fill out the form fields. Click inside the Application package box with the Plus (+) sign. A file open dialog will appear. Select the .xap file that you renamed after downloading from AppMakr earlier. &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_-_vZcvroBFE/TdKIJHXNxcI/AAAAAAAAAYY/QllYvhimL04/s1600-h/image%5B25%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_-_vZcvroBFE/TdKIJfGBZjI/AAAAAAAAAYc/5aMZlrMQxGw/image_thumb%5B13%5D.png?imgmax=800" width="404" height="365"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Continue through the process of providing an application description and uploading the necessary icon images. After you finish, sit back and wait for your app to go through the testing and certification process.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7f3aa0ca-dda0-44e9-853f-3509560864e9" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Phone+7" rel="tag"&gt;Windows Phone 7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WP7" rel="tag"&gt;WP7&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AppMakr" rel="tag"&gt;AppMakr&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-7430844916866058207?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/7430844916866058207/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=7430844916866058207" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/7430844916866058207?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/7430844916866058207?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/05/submitting-appmakr-app-to-windows-phone.html" title="Submitting an AppMakr app to the Windows Phone 7 Marketplace" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_-_vZcvroBFE/TdKIHVuhnDI/AAAAAAAAAX8/NaLHCG9tUoc/s72-c/image_thumb%5B4%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;AkMHQXY4eyp7ImA9WhZXGUs.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-788378326047144506</id><published>2011-05-09T15:12:00.001-04:00</published><updated>2011-05-09T15:13:50.833-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T15:13:50.833-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>Switching to C#</title><content type="html">&lt;p&gt;&lt;a title="neon sign - foreign language bookstore" href="http://www.flickr.com/photos/avlxyz/4999247107/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="neon sign - foreign language bookstore" border="0" alt="neon sign - foreign language bookstore" align="right" src="http://lh4.ggpht.com/_-_vZcvroBFE/Tcg8rdm-t8I/AAAAAAAAAXg/uUVO9zC3l1c/4999247107_23c7d66bd8_m_foreign-language%5B3%5D.jpg?imgmax=800" width="165" height="244"&gt;&lt;/a&gt;After more than 7 years of VB.Net development, I have made the conscious decision to split my development into primarily VB.Net for most of my ASP.Net projects and C# for my Windows Phone 7, Silverlight, and WPF work. This transition was due to three primary driving forces:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Early Windows Phone 7 development (pre-RTM) was limited to C# due to the lack of availability for VB.Net support on the WP7 platform.&lt;/li&gt; &lt;li&gt;There appears to be a larger codebase of Silverlight and WP7 utilities, samples, and tutorials in C# to learn from.&lt;/li&gt; &lt;li&gt;I have had an easier time finding advanced Linq syntax examples in C#.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The syntax differences are not much different. I was already used to the most common syntactic differences, such as parenthesis, squiggly brackets, and semi-colons from my earlier work in PHP and Java. I would have started in C# if it were not for the Classic ASP and VB.Net applications I was supporting years ago in my .Net 1.1 beginnings.&lt;/p&gt; &lt;p&gt;Of course, the language selection is always trumped by complying with my clients’ corporate development standards and selecting the appropriate language for the job where the differences are relevant.&lt;/p&gt; &lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/avlxyz/4999247107/" target="_blank"&gt;avlxyz&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" target="_blank"&gt;CC BY-SA 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-788378326047144506?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/788378326047144506/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=788378326047144506" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/788378326047144506?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/788378326047144506?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/05/switching-to-c.html" title="Switching to C#" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_-_vZcvroBFE/Tcg8rdm-t8I/AAAAAAAAAXg/uUVO9zC3l1c/s72-c/4999247107_23c7d66bd8_m_foreign-language%5B3%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUMAQX8zeCp7ImA9WhZQE00.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-2696713066837211842</id><published>2011-04-15T09:27:00.002-04:00</published><updated>2011-04-20T09:50:40.180-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-20T09:50:40.180-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Leadership" /><category scheme="http://www.blogger.com/atom/ns#" term="Professional Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><title>Career Transitions Presentation to Ball State University</title><content type="html">I was asked to &lt;a href="http://www.bsu.edu/calendar/event/0,1361,70668-3375-27706,00.html" target="_blank"&gt;speak to the Six Sigma Student Organization&lt;/a&gt; in the Whitinger Business Building about the transitions a person may fear while changing roles of a student to professional as well as transitions that may take place while a person is pursuing their career. The talking points from my presentation are below.&lt;br /&gt;
&lt;div id="__ss_7631043" style="width: 340px;"&gt;&lt;strong style="display: block; margin: 12px 0px 4px;"&gt;&lt;a href="http://www.slideshare.net/DeanWillson/career-transitions-ball-state-university-six-sigma-speakers-series" title="Career Transitions - Ball State University, Six Sigma Speakers Series"&gt;Career Transitions - Ball State University, Six Sigma Speakers Series&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="284" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/7631043?rel=0" width="340"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/DeanWillson"&gt;Dean Willson&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-2696713066837211842?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/2696713066837211842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=2696713066837211842" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/2696713066837211842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/2696713066837211842?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/04/career-transitions-presentation-to-ball.html" title="Career Transitions Presentation to Ball State University" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0IAQH0zeyp7ImA9WhZRF08.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-9057920377181154313</id><published>2011-04-13T15:05:00.001-04:00</published><updated>2011-04-13T15:05:41.383-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-13T15:05:41.383-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="sql server" /><category scheme="http://www.blogger.com/atom/ns#" term="Training" /><category scheme="http://www.blogger.com/atom/ns#" term="PASS" /><category scheme="http://www.blogger.com/atom/ns#" term="Community" /><title>SQL Saturday #67 Chicago</title><content type="html">&lt;p&gt;&lt;a href="http://www.sqlsaturday.com" target="_blank"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SQLSaturday 67 Logo" border="0" alt="SQLSaturday 67 Logo" align="right" src="http://lh3.ggpht.com/_-_vZcvroBFE/TaX0A0g-OrI/AAAAAAAAAXI/2Trbd3qTGrI/SQLSaturday67Logo1.jpg?imgmax=800" width="204" height="84"&gt;&lt;/a&gt;Most of the sessions I attended involved improving performance. Whether it was proactive (design for performance) or reactive (troubleshooting), most sessions included some coverage of indexes. Surprisingly there very little duplication of content by the different speakers. Because of the quality and relevance of the all sessions offered, it was difficult to decide which sessions to attend. Below is a brief recap of the ones I chose.&lt;/p&gt; &lt;h4&gt;Sessions&lt;/h4&gt; &lt;p&gt;&lt;strong&gt;Performance Tuning Made Easy&lt;/strong&gt; with &lt;strong&gt;Thomas LaRock&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Being a certified Six Sigma Black Belt, I appreciated the way Tom (&lt;a href="http://thomaslarock.com/" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/SQLRockstar" target="_blank"&gt;twitter&lt;/a&gt;) described a simple systematic process for performance tuning based on the Six Sigma DMAIC (Design, Measure, Analyze, Improve, Control) approach. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Optimizer, Statistics, and Indexes &lt;/strong&gt;with &lt;strong&gt;Grant Fritchey&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Grant (&lt;a href="http://www.scarydba.com/" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/GFritchey" target="_blank"&gt;twitter&lt;/a&gt;) gave a great primer to the internals of the Relational Engine, the components of which have really cool names like Query Parser, Algebrizer, and Optimizer. He also spent more time discussing the Statistics histogram, which appeals to my six sigma senses, than I generally see in an hour long presentation.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;WIT (Women in Technology) Panel: Energizing the Next Generation&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This session seemed to have a balanced number of men and women in attendance. It was nice to hear the perspective of multiple women with different backgrounds sharing their experiences in the field. I’m really happy that most of their experiences sounded positive even in the face of adversity. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Refactoring SQL &lt;/strong&gt;with&lt;strong&gt; Jeremiah Peschka&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Jeremiah (&lt;a href="http://facility9.com/" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/peschkaj" target="_blank"&gt;twitter&lt;/a&gt;) really highlighted the importance of using consistent naming conventions and common alias names. He touched on SQL unit testing and some open source test frameworks. He also showed refactoring examples such as, re-writing where clauses to move functions from the left side of the operator to the right side for performance gains.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Database Design Contentious Issues &lt;/strong&gt;with&lt;strong&gt; Karen Lopez&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This was one of my favorite sessions. It was interactive as the participants had to walk to the front of the room and anonymously vote (via post-it note) on a scale of 1 to 5 on our opinion/view of two issues which people often passionately argue about, such as, surrogate keys vs. natural keys. People that admitted to voting on the extremes (one or five) were asked to explain why they voted the way they did and open the topic for group discussion. Karen liberally made effective use of Canadian SWAG (like ketchup flavored Pringles) to persuade the edge-case voters to plead their case in the face of possible peer criticism. Karen (&lt;a href="http://blog.infoadvisors.com/index.php/category/blog/" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/datachick" target="_blank"&gt;twitter&lt;/a&gt;) expertly moderated the discussion and provided great pro/con examples on both sides even where it conflicted with her own views. It was both fun and educational.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Index Internals for Mere Mortals&lt;/strong&gt; with &lt;strong&gt;Michelle Ufford&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;At a lightning quick pace, Michelle (&lt;a href="http://sqlfool.com/" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/#!/sqlfool" target="_blank"&gt;twitter&lt;/a&gt;) brought a great deal of insight to index internals. She showed actual representations of index pages and pointed out key elements of it, including the “uniqueifier”. She covered a great deal of information in the short one hour, but it was very clear, understandable, and educational. &lt;/p&gt; &lt;h4&gt;Lunch&lt;/h4&gt; &lt;p&gt;The lunch was provided by Meaty Balls. It was plenty of tasty meat and mushrooms for the price.&lt;/p&gt; &lt;h4&gt;Check-in&lt;/h4&gt; &lt;p&gt;The organizers offered a “Speed Pass” option where I printed my name tag, lunch ticket, and raffle tickets off in advance which meant I could sleep in a little before heading to Chicago.&lt;/p&gt; &lt;h4&gt;Venue&lt;/h4&gt; &lt;p&gt;The conference was hosted at the &lt;a href="http://www.add.devry.edu/" target="_blank"&gt;DeVry University&lt;/a&gt; Addison Campus which had great classroom spaces. There were ample power outlets available on the table tops for each attendee to plug in, if desired. I wish I had remembered to bring the AC adapter for my GPS for the trip home since my car lighter adapter stopped working before the trip.&lt;/p&gt; &lt;h4&gt;Networking&lt;/h4&gt; &lt;p&gt;I was within a SWAG keychain throw of several SQL Celebrities like Kevin Kline (&lt;a href="http://kevinekline.com/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/#!/kekline" target="_blank"&gt;twitter&lt;/a&gt;) and Brent Ozar (&lt;a href="http://www.brentozar.com"&gt;blog&lt;/a&gt;|&lt;a href="http://www.scarydba.com/www.twitter.com/brento"&gt;twitter&lt;/a&gt;). Brent was sitting behind me in three out of five sessions I attended - and no, I’m not a SQL Stalker. &lt;/p&gt; &lt;p&gt;I finally got to meet Wendy Pastrick face-to-face after several email and twitter conversations over the last year. &lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;h4&gt;Credit-worthy&lt;/h4&gt; &lt;p&gt;I’ve been running the &lt;a href="http://www.fwpass.org/" target="_blank"&gt;fwPASS&lt;/a&gt; User Group for a few years and to do just an average job takes a surprising amount of time and effort. See my &lt;a href="http://practicalhoshin.blogspot.com/p/case-study.html" target="_blank"&gt;case study on continuous improvement in a professional association&lt;/a&gt; for more information. The organizers did an exceptional job that deserves more thanks than I can provide. I’m not sure if this is inclusive of all the organizers (which I copied from &lt;a href="http://www.douglane.net/" target="_blank"&gt;Doug Lane’s blog&lt;/a&gt;), but THANK YOU:&lt;/p&gt; &lt;p&gt;Wendy Pastrick (&lt;a href="http://wendyverse.blogspot.com/"&gt;blog&lt;/a&gt;|&lt;a href="https://twitter.com/wendy_dance"&gt;twitter&lt;/a&gt;)&lt;br&gt;Ted Kruger (&lt;a href="http://blogs.lessthandot.com/index.php?disp=authdir&amp;amp;author=68"&gt;blog&lt;/a&gt;|&lt;a href="https://twitter.com/onpnt"&gt;twitter&lt;/a&gt;)&lt;br&gt;Norman Kelm (&lt;a href="http://www.sqlservercentral.com/blogs/members/profile.aspx?UserID=12670"&gt;blog&lt;/a&gt;|&lt;a href="https://twitter.com/normankelm"&gt;twitter&lt;/a&gt;)&lt;br&gt;Jes Borland (&lt;a href="http://blogs.lessthandot.com/index.php/All/?disp=authdir&amp;amp;author=420"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/grrl_geek"&gt;twitter&lt;/a&gt;)&lt;br&gt;Bob Pusateri (&lt;a href="http://www.bobpusateri.com/"&gt;blog&lt;/a&gt;|&lt;a href="https://twitter.com/sqlbob"&gt;twitter&lt;/a&gt;)&lt;br&gt;Aaron Lowe (&lt;a href="http://www.aaronlowe.net/"&gt;blog&lt;/a&gt;|&lt;a href="https://twitter.com/vendoran"&gt;twitter&lt;/a&gt;)&lt;br&gt;Bill Lescher (&lt;a href="https://twitter.com/blescher"&gt;twitter&lt;/a&gt;)&lt;br&gt;Rich Rousseau (&lt;a href="https://twitter.com/zigzag219"&gt;twitter&lt;/a&gt;)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-9057920377181154313?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/9057920377181154313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=9057920377181154313" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/9057920377181154313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/9057920377181154313?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/04/sql-saturday-67-chicago.html" title="SQL Saturday #67 Chicago" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_-_vZcvroBFE/TaX0A0g-OrI/AAAAAAAAAXI/2Trbd3qTGrI/s72-c/SQLSaturday67Logo1.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0IBQXc9fip7ImA9WhZREUQ.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-5997835262416917370</id><published>2011-04-07T11:51:00.001-04:00</published><updated>2011-04-07T11:52:30.966-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-07T11:52:30.966-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IIS" /><category scheme="http://www.blogger.com/atom/ns#" term="XAML" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>IIS is Missing XAP Mime Type for Silverlight Application</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/evaysucamara/5461094501/" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="lego mime" border="0" alt="lego mime" align="right" src="http://lh3.ggpht.com/_-_vZcvroBFE/TZ3dcXqE2mI/AAAAAAAAAXE/QrPHxkHsu00/5461094501_bf0bf08d1b_m_mime%5B6%5D.jpg?imgmax=800" width="204" height="137"&gt;&lt;/a&gt;Upon navigating to the web page hosting a newly deployed Silverlight application, I received the following error:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Error: Unhandled Error in Silverlight Application &lt;br&gt;Code: 2104&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;Category: InitializeError&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;Message: Could not download the Silverlight application. Check web server settings&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Thanks, but which server settings? In my case the MIME type for the .xap extension was missing in IIS7. I’m not sure why it was missing since .xaml and .xbap were already defined. I simply added the “.xap” extension and it’s corresponding MIME Type “application/x-silverlight-app” and all was well.&lt;br&gt;&lt;a href="http://lh3.ggpht.com/_-_vZcvroBFE/TZ3dcjLLxqI/AAAAAAAAAW8/TYuPejbqXEc/s1600-h/XapMissingMimeTypeInIIS3.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Xap Missing Mime Type In IIS" border="0" alt="Xap Missing Mime Type In IIS" src="http://lh3.ggpht.com/_-_vZcvroBFE/TZ3ddM1ZhMI/AAAAAAAAAXA/sfvR0bBqq9Y/XapMissingMimeTypeInIIS_thumb1.jpg?imgmax=800" width="354" height="204"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/evaysucamara/5461094501/" target="_blank"&gt;e v a . p é b a r&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by/2.0/deed.en" target="_blank"&gt;CC BY 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-5997835262416917370?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/5997835262416917370/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=5997835262416917370" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5997835262416917370?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/5997835262416917370?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/04/iis-is-missing-xap-mime-type-for.html" title="IIS is Missing XAP Mime Type for Silverlight Application" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_-_vZcvroBFE/TZ3dcXqE2mI/AAAAAAAAAXE/QrPHxkHsu00/s72-c/5461094501_bf0bf08d1b_m_mime%5B6%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CkEBSX09cSp7ImA9WhZREUQ.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-1807329823120987685</id><published>2011-04-07T11:29:00.001-04:00</published><updated>2011-04-07T11:37:38.369-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-07T11:37:38.369-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title>File URI invalid for WCF HTTP Endpoint</title><content type="html">&lt;p&gt;&lt;font face="Courier New"&gt;System.ArgumentException: The provided URI scheme 'file' is invalid; expected 'http'.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/satemkemet/2244596281/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="disconnected" border="0" alt="disconnected" align="right" src="http://lh5.ggpht.com/_-_vZcvroBFE/TZ3aEBdjzkI/AAAAAAAAAW0/tDZoZ0SMspY/2244596281_2b139800c5_m_phone-booth%5B3%5D.jpg?imgmax=800" width="184" height="244"&gt;&lt;/a&gt;The error occurred when debugging a Silverlight app that uses Windows Communication Foundation (WCF). When running the debugger, the IDE was launching the html file hosting the Silverlight application, but it was launching it in the browser using a file path, F:\Projects\MyLOBApp\Bin\Debug\TestPage.html, not through IIS as &lt;a href="http://localhost/MyLOBApp/TestPage.html"&gt;http://localhost/MyLOBApp/TestPage.html&lt;/a&gt;. The application was using the following code in a global application class to set the URL to the WCF service.&lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; WebServiceUrlPath&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        Uri uri = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Uri(Application.Current.Host.Source, &lt;span style="color: #006080"&gt;"../AppDataService.svc"&lt;/span&gt;);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; uri.AbsolutePath.ToString(); &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;} &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;My solution consists of two projects: &lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;The Silverlight application project &lt;br /&gt;&lt;li&gt;The WCF service project&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Upon closer inspection of the file path, Visual Studio was launching the test page from the Silverlight project when it should have been launching the test html page from the WCF project. The simple solution was to set the WCF project as the StartUp Project. That should have been more obvious especially in light of the following message box that popped up before the debugger started, but it was initially overlooked because of the similar project names and html page filenames in the two projects.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_-_vZcvroBFE/TZ3YTn69BbI/AAAAAAAAAWs/HUiYkPt9VeY/s1600-h/image%5B3%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_-_vZcvroBFE/TZ3YUGC54aI/AAAAAAAAAWw/paiaEeeWbXM/image_thumb%5B1%5D.png?imgmax=800" width="354" height="133"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;photo credit: &lt;a href="http://www.flickr.com/photos/satemkemet/2244596281/" target="_blank"&gt;satemkemet&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" target="_blank"&gt;CC BY-SA 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-1807329823120987685?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/1807329823120987685/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=1807329823120987685" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1807329823120987685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/1807329823120987685?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/04/file-uri-invalid-for-wcf-http-endpoint.html" title="File URI invalid for WCF HTTP Endpoint" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_-_vZcvroBFE/TZ3aEBdjzkI/AAAAAAAAAW0/tDZoZ0SMspY/s72-c/2244596281_2b139800c5_m_phone-booth%5B3%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkMEQXo_eSp7ImA9WhZSFko.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-4939512898203235454</id><published>2011-04-01T11:06:00.001-04:00</published><updated>2011-04-01T11:06:40.441-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-01T11:06:40.441-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="javascript" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><title>Javascript Deserialization Error Converting Ajax JSON in ASP.Net Web Service</title><content type="html">&lt;p&gt;&lt;a href="http://www.flickr.com/photos/db2r/4501292090/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="fast light wave runner - like jQuery ajax" border="0" alt="fast light wave runner - like jQuery ajax" align="right" src="http://lh3.ggpht.com/_-_vZcvroBFE/TZXp4OxhpFI/AAAAAAAAAWg/VsX9byeVFFo/4501292090_d9a4814b54_m-jetski%5B3%5D.jpg?imgmax=800" width="244" height="163"&gt;&lt;/a&gt;The .Net framework makes it very easy to do fast lightweight AJAX calls to an ASP.Net web service using jQuery or other frameworks using &lt;a href="http://json.org" target="_blank"&gt;json (JavaScript Object Notation)&lt;/a&gt; and XMLHTTPRequest (MUCH faster and lighter weight than the UpdatePanel). &lt;/p&gt; &lt;p&gt;Because the data in json is delimited by apostrophe’s, having them within the text (as the data itself) can throw a deserializing error when ASP.Net parses the json text body into the web service method parameters. A simple way to prevent is to wrap your javascript variable with the escape() method. It will convert an apostrophe to %u2019. On the server side within your web method before you pass the data to the database, you can wrap it with Server.UrlDecode() to convert it back to an apostrophe.&lt;/p&gt; &lt;h4&gt;Javascript jQuery Ajax call&lt;/h4&gt; &lt;p&gt;Below is an example of a typical jQuery asynchronous call to a web service. Note the webservice name is AppWebService.asmx. UpdateComments is the web method being called. The UpdateComments web method takes two parameters an integer RecordID and a string RecordComments. Note the use of escape(RecordComments) to encode the RecordComments field in the event that it contains apostrophes (or other special characters).&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;var options = {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    type: &lt;span style="color: #006080"&gt;"POST"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    url: &lt;span style="color: #006080"&gt;"/Application/AppWebService.asmx/UpdateComments"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    data: &lt;span style="color: #006080"&gt;"{'RecordID':"&lt;/span&gt; + RecordID + &lt;span style="color: #006080"&gt;", 'RecordComments':'"&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        + escape(RecordComments) + &lt;span style="color: #006080"&gt;"'}"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    contentType: &lt;span style="color: #006080"&gt;"application/json; charset=utf-8"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    dataType: &lt;span style="color: #006080"&gt;"json"&lt;/span&gt;,&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    success: &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; (response) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (response.d == &lt;span style="color: #006080"&gt;""&lt;/span&gt;) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;            jQuery(&lt;span style="color: #008000"&gt;'#saving').hide();&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    }, //&lt;span style="color: #0000ff"&gt;end&lt;/span&gt; success&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;error&lt;/span&gt;: &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; (response) {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        alert(&lt;span style="color: #006080"&gt;"Sorry, the update failed. \n\n Details follow: "&lt;/span&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    + response.responseText);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    } //&lt;span style="color: #0000ff"&gt;end&lt;/span&gt; &lt;span style="color: #0000ff"&gt;error&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;};&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;//&lt;span style="color: #0000ff"&gt;Call&lt;/span&gt; the Web service&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;jQuery.ajax(options);&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;h4&gt;Raw Request Captured in Fiddler&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_-_vZcvroBFE/TZXp4zO3jXI/AAAAAAAAAWk/yw4WJEPntiQ/s1600-h/ferryboat%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="slow ferry boat - like full page postback or UpdatePanel" border="0" alt="slow ferry boat - like full page postback or UpdatePanel" align="right" src="http://lh3.ggpht.com/_-_vZcvroBFE/TZXp5KvpXdI/AAAAAAAAAWo/QdYhHrUZxjc/ferryboat_thumb%5B1%5D.jpg?imgmax=800" width="244" height="143"&gt;&lt;/a&gt;The text below is the contents of the HTTP request that is sent to the web service. In this case the actual data is much smaller than the request header information. You can see how much less data is being sent back to the server for processing compared with a complete page postback or even an ASP.Net AJAX UpdatePanel. The json data itself is:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;{'RecordID':10629, 'RecordComments':'cat&lt;font style="background-color: #ffff00"&gt;%u2019&lt;/font&gt;s&lt;font style="background-color: #ffff00"&gt;%20&lt;/font&gt;meow'}&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The RecordComments text is an encoded version of “cat’s meow” (without the quotes).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;POST &lt;/font&gt;&lt;a href="http://domain/Application/AppWebService.asmx/UpdateComments"&gt;&lt;font face="Courier New"&gt;http://domain/Application/AppWebService.asmx/UpdateComments&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; HTTP/1.1&lt;br&gt;x-requested-with: XMLHttpRequest&lt;br&gt;Accept-Language: en-us&lt;br&gt;Referer: &lt;/font&gt;&lt;a href="http://domain/Application/RecordMaintenance.aspx"&gt;&lt;font face="Courier New"&gt;http://domain/Application/RecordMaintenance.aspx&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;font face="Courier New"&gt;Accept: application/json, text/javascript, */*&lt;br&gt;Content-Type: application/json; charset=utf-8&lt;br&gt;Accept-Encoding: gzip, deflate&lt;br&gt;User-Agent: Mozilla/4.0&lt;br&gt;Host: kestrel&lt;br&gt;Content-Length: 148&lt;br&gt;Connection: Keep-Alive&lt;br&gt;Pragma: no-cache&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;{'RecordID':10629, 'RecordComments':'cat&lt;font style="background-color: #ffffff"&gt;%u2019s&lt;/font&gt;%20meow'}&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;h4&gt;Web Method accepts json&lt;/h4&gt;&lt;br /&gt;&lt;p&gt;Behind the scenes ASP.Net parses the json data and uses it to populate the web method parameters. If there was an apostrophe in the json text body as shown below:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font face="Courier New"&gt;{'RecordID':10629, 'RecordComments':'cat&lt;font style="background-color: #ffff00"&gt;'&lt;/font&gt;s meow'}&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;ASP.Net would not correctly parse the data correctly, because it would be expecting a closing bracket } immediately after 'cat'. Since we escaped the data, it is parsed correctly using the following web method. Note the use of Server.URLDecode to convert the RecordComment from “cat%u2019s%20meow” back to “cat's meow” before passing it to the helper method as a parameter for a stored procedure.&lt;/p&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;WebMethod()&amp;gt; _&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;lt;ScriptMethod()&amp;gt; _&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;Public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Function&lt;/span&gt; UpdateComments(&lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; RecordID &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Integer&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;ByVal&lt;/span&gt; RecordComments &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;) &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;Dim&lt;/span&gt; result &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; &lt;span style="color: #0000ff"&gt;String&lt;/span&gt; = &lt;span style="color: #0000ff"&gt;String&lt;/span&gt;.Empty&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;Try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        CommonSQL.ExecuteNonQuery(&lt;span style="color: #006080"&gt;"sproc_name"&lt;/span&gt;, _&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;           RecordID, _&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;           Server.UrlDecode(RecordComments))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color: #0000ff"&gt;As&lt;/span&gt; Exception&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;Return&lt;/span&gt; ex.ToString&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;End&lt;/span&gt; &lt;span style="color: #0000ff"&gt;Try&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;Return&lt;/span&gt; result&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;End&lt;/span&gt; Function&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;photo credit (wave runner): &lt;a href="http://www.flickr.com/photos/db2r/4501292090/"&gt;db2r&lt;/a&gt; / &lt;a href="http://creativecommons.org/licenses/by-sa/2.0/deed.en" target="_blank"&gt;cc BY-SA 2.0&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-4939512898203235454?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/4939512898203235454/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=4939512898203235454" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/4939512898203235454?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/4939512898203235454?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/04/javascript-deserialization-error.html" title="Javascript Deserialization Error Converting Ajax JSON in ASP.Net Web Service" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_-_vZcvroBFE/TZXp4OxhpFI/AAAAAAAAAWg/VsX9byeVFFo/s72-c/4501292090_d9a4814b54_m-jetski%5B3%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEUBQXs9fyp7ImA9WhZTE00.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-3391797039162542205</id><published>2011-03-16T15:25:00.001-04:00</published><updated>2011-03-16T16:10:50.567-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-16T16:10:50.567-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>Lessons Learned in the Windows Phone 7 Marketplace</title><content type="html">&lt;p&gt;The following are a few of the things I learned during the development process and submitting a first application to the &lt;a href="http://marketplace.windowsphone.com/" target="_blank"&gt;Windows Phone Market Place&lt;/a&gt;. Hopefully they can be of some help to others.&lt;/p&gt; &lt;h4&gt;Application Name&lt;/h4&gt; &lt;p&gt;If your application name is more than about 15 characters, the whole application name may be truncated on the various WP7 screens. This is also true in the thumbnail view in the &lt;a href="http://marketplace.windowsphone.com/" target="_blank"&gt;Market Place&lt;/a&gt;. Note how the text fades to white toward the right side of the name in the screenshot below.&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;h4&gt;Iconography&lt;/h4&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_-_vZcvroBFE/TYEOojreoXI/AAAAAAAAAV0/7UhUSorSew0/s1600-h/ZuneMarketplace%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Zune Marketplace" border="0" alt="Zune Marketplace" align="right" src="http://lh5.ggpht.com/_-_vZcvroBFE/TYEOpesKVQI/AAAAAAAAAV4/L_16HLTJ_fk/ZuneMarketplace_thumb.png?imgmax=800" width="244" height="203"&gt;&lt;/a&gt;Graphic design in the consumer market space is a necessity. Your icons are displayed immediately adjacent to other professional designs - regardless of app quality.&lt;/p&gt; &lt;h1&gt;&lt;/h1&gt; &lt;h4&gt;Application Icons&lt;/h4&gt; &lt;p&gt;Initially I created a 31px application icon. I think that was the size used during the RC or beta version of Visual Studio Express for Windows Phone 7. The following are the default icon sizes for &lt;a href="http://go.microsoft.com/fwlink/?LinkID=183220" target="_blank"&gt;Windows Phone 7 application certification&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ApplicationIcon.png 62px (transparency allowed)  &lt;li&gt;Background.png* 173px (transparent allowed) &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;* &lt;em&gt;Tip: don’t put the application name in this image (or any important cosmetic detail at the bottom) as the Application title text from the Visual Studio property page will be rendered on top of the 173px icon near the bottom of the image (see the “Start Screen” in the screen shot below).&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The following is a composite image containing multiple screen shots:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Phone Windows menu screen (left)  &lt;li&gt;Visual Studio project properties, application tab (center)  &lt;li&gt;Phone Start screen (right)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Note in the image where the text is displayed and which images are used on the various app screens. Click the image for full size.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_-_vZcvroBFE/TYEOph3pLGI/AAAAAAAAAV8/PXhxfAj4hlo/s1600-h/WP7-Iconography-Visual-Studio%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP7 Iconography map in Visual Studio" border="0" alt="WP7 Iconography map in Visual Studio" src="http://lh3.ggpht.com/_-_vZcvroBFE/TYEOqESpcQI/AAAAAAAAAWA/iC6l0VflEtk/WP7-Iconography-Visual-Studio_thumb%5B3%5D.jpg?imgmax=800" width="404" height="191"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h4&gt;Market Place Icons&lt;/h4&gt; &lt;p&gt;The following square icons (without transparency) are required for display in the Market Place:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;99px  &lt;li&gt;173px  &lt;li&gt;200px&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;WP7 application screen shots can be uploaded to showcase key functionality.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;480 x 800px screenshots  &lt;li&gt;vertical orientation for upload  &lt;li&gt;set zoom level on emulator to 100% for correct screenshot resolution (need a high enough resolution monitor to capture the screenshots. 1024X768 is not good enough) &lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;Marketplace Detailed description&lt;/h4&gt; &lt;p&gt;I copied my description from a website where the application is described. I’m not sure I would do that in the future as it did not display properly on the &lt;a href="http://create.msdn.com/en-US/" target="_blank"&gt;app hub&lt;/a&gt; submission page (note the incorrect text wrapping at the end of the lines. There doesn’t appear to be an option to edit the description without re-submitting the application.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_-_vZcvroBFE/TYEOqqbtxEI/AAAAAAAAAWE/c6qhoUyFMX4/s1600-h/WP7-app-submit-description%5B9%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP7 app submit description" border="0" alt="WP7 app submit description" src="http://lh6.ggpht.com/_-_vZcvroBFE/TYEOq67VhiI/AAAAAAAAAWI/2jO-61W5U9w/WP7-app-submit-description_thumb%5B7%5D.jpg?imgmax=800" width="354" height="105"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I was pleasantly surprised the text looked correct when my application was certified as approved, but I don’t know if the person testing the app corrected the description text formatting during prior to approval/publishing.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_-_vZcvroBFE/TYEOrFSJZsI/AAAAAAAAAWM/1K75ADPu4to/s1600-h/marketplace-description%5B2%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="WP7 marketplace description using Zune software" border="0" alt="WP7 marketplace description using Zune software" src="http://lh6.ggpht.com/_-_vZcvroBFE/TYEOrlvm-rI/AAAAAAAAAWQ/mvx2kXHSebU/marketplace-description_thumb.jpg?imgmax=800" width="244" height="173"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Another developer had the misfortune of an &lt;a href="http://rd3d2.wordpress.com/2010/10/14/tip-5dont-use-formatting-in-your-marketplace-descriptions/" target="_blank"&gt;unfortunate example using a bullet list&lt;/a&gt; format.&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;h4&gt;Submission and Certification&lt;/h4&gt; &lt;p&gt;I submitted my application to the &lt;a href="http://create.msdn.com/en-US/" target="_blank"&gt;App Hub&lt;/a&gt; on a Sunday evening and it was certified by the following Wednesday morning. It was accepted on the first submission, but the feature set (and graphic design) was kept intentionally simple in the first version.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-3391797039162542205?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/3391797039162542205/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=3391797039162542205" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/3391797039162542205?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/3391797039162542205?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/03/lessons-learned-in-windows-phone-7.html" title="Lessons Learned in the Windows Phone 7 Marketplace" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_-_vZcvroBFE/TYEOpesKVQI/AAAAAAAAAV4/L_16HLTJ_fk/s72-c/ZuneMarketplace_thumb.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DkIGRX0zcSp7ImA9WhZTEk0.&quot;"><id>tag:blogger.com,1999:blog-6008281045932405718.post-6753650102065389364</id><published>2011-03-10T12:48:00.001-05:00</published><updated>2011-03-15T11:55:24.389-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-15T11:55:24.389-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Testing" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".Net" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>Windows Phone 7 Testing a Date Change in the Emulator</title><content type="html">&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_-_vZcvroBFE/TXkOx5Yew7I/AAAAAAAAAVc/N92CDC1aITY/s1600-h/image%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://lh3.ggpht.com/_-_vZcvroBFE/TXkOyReQcHI/AAAAAAAAAVg/SuLkL7_uJj8/image_thumb.png?imgmax=800" width="136" height="244"&gt;&lt;/a&gt;I wrote a WP7 application that stores a bit of data based on today’s date. Tomorrow when the date changes, yesterday’s data gets cleared out to start fresh. Before submitting the app to the &lt;a href="http://create.msdn.com/en-US/" target="_blank"&gt;App Hub&lt;/a&gt; I needed to test whether it would work as expected when the date changes. At the time, I didn’t have an actual Windows Phone 7 for testing so I used the Emulator. The testing process didn’t work out quite as I expected.&lt;/p&gt; &lt;h4&gt;Happy Path&lt;/h4&gt; &lt;ol&gt; &lt;li&gt;Load Emulator  &lt;li&gt;Deploy app to the emulator  &lt;li&gt;Run app  &lt;li&gt;Click some buttons that store today’s data  &lt;li&gt;&lt;font color="#0000ff"&gt;Change the date on the development box (assuming that is where the emulator gets its current date) &lt;/font&gt; &lt;li&gt;&lt;font color="#0000ff"&gt;Click the windows key to unload the app &lt;/font&gt; &lt;li&gt;Return to app (which should have a different date since I changed the date on the development box)  &lt;li&gt;The app data should be empty because it is a new day&lt;/li&gt;&lt;/ol&gt; &lt;h4&gt;Fail&lt;/h4&gt; &lt;p&gt;There were a few misconception to the above. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;It appears that the emulator loads today’s date when the emulator starts up, because it didn’t change when I changed the date in my development environment.  &lt;li&gt;When you click the back button it unloads the application and you lose the data stored in Isolated Storage.&lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;Fix&lt;/h4&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_-_vZcvroBFE/TXkOyqBpANI/AAAAAAAAAVk/XUy5J5tY1WA/s1600-h/image%5B5%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="right" src="http://lh6.ggpht.com/_-_vZcvroBFE/TXkOzHS4E8I/AAAAAAAAAVo/WObSHqN3zRM/image_thumb%5B1%5D.png?imgmax=800" width="136" height="244"&gt;&lt;/a&gt;Replace steps &lt;font color="#0000ff"&gt;5 &amp;amp; 6&lt;/font&gt; in the above “Happy Path” with the following steps to effectively test the date change:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Click to the System Settings page in the Emulator  &lt;li&gt;Click “date &amp;amp; time”  &lt;li&gt;Toggle the “set automatically” slider to Off  &lt;li&gt;Click on the date in the date field  &lt;li&gt;Change the date to a different day  &lt;li&gt;Click the windows key and left arrow icon &lt;a href="http://lh6.ggpht.com/_-_vZcvroBFE/TXkOzRmP6JI/AAAAAAAAAVs/3vKToNnNLWg/s1600-h/image%5B19%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_-_vZcvroBFE/TXkO0FWcDcI/AAAAAAAAAVw/7lCHn8OllIM/image_thumb%5B11%5D.png?imgmax=800" width="20" height="19"&gt;&lt;/a&gt; to see the app in the menu.&lt;/li&gt;&lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6008281045932405718-6753650102065389364?l=dean-o.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://dean-o.blogspot.com/feeds/6753650102065389364/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6008281045932405718&amp;postID=6753650102065389364" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/6753650102065389364?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6008281045932405718/posts/default/6753650102065389364?v=2" /><link rel="alternate" type="text/html" href="http://dean-o.blogspot.com/2011/03/windows-phone-7-testing-date-change-in.html" title="Windows Phone 7 Testing a Date Change in the Emulator" /><author><name>Dean Willson</name><uri>http://www.blogger.com/profile/12159153218021214633</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://4.bp.blogspot.com/_-_vZcvroBFE/SM_FjJ4Sr9I/AAAAAAAAABk/53nvPf6aeFY/S220/dw_BioPhotoSQ.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_-_vZcvroBFE/TXkOyReQcHI/AAAAAAAAAVg/SuLkL7_uJj8/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry></feed>

