<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jason Zander's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jasonz/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jasonz/feed.xml</link>
    <description>Corporate Vice President, Windows Azure</description>
    <lastBuildDate>Sun, 12 Apr 2015 06:54:14 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>New Team, New Challenges</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/new-team-new-challenges</link>
      <pubDate>Wed, 19 Sep 2012 17:30:16 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/09/19/new-team-new-challenges/</guid>
      <description><![CDATA[Last week we officially launched VS2012 and the .NET Framework 4.5.&nbsp; I&rsquo;ve spent the last...]]></description>
      <content:encoded><![CDATA[<p>Last week we officially <a href="http://blogs.msdn.com/b/jasonz/archive/2012/09/12/tune-in-to-the-visual-studio-2012-launch.aspx">launched VS2012 and the .NET Framework 4.5</a>.&nbsp; I&rsquo;ve spent the last couple of weeks in launch activities in London, Seattle, Atlanta, and New York, sharing details on the new versions and doing whatever I can to help people get going on the new release.&nbsp; I can honestly say this is the best release I&rsquo;ve worked on (and I&rsquo;ve worked on basically all of them).&nbsp; We have been able to use half the milestones and land with higher quality this release thanks to several internal improvements as well as the new toolset we just released&nbsp;(I will have to share some of those improvements in future posts; I&rsquo;ve heard from many of you that you are trying to do similar things).<br />&nbsp;<br />Now that we have shipped I will be taking on a new challenge owning development efforts for <a href="http://www.windowsazure.com">Windows Azure</a>.&nbsp; I&rsquo;ll be joining my new peers Scott Guthrie (another&nbsp;DevDiv alumni) and&nbsp;Bharat Shah.&nbsp; I&rsquo;m looking forward to working with&nbsp;Scott and Bharat as well as taking on a new set of challenges and&nbsp;technologies.&nbsp; Cloud computing is one of the most exciting technologies in the industry right now and I&rsquo;m joining a great team working on cool stuff at global scale.<br />&nbsp;<br />Wish me luck &lt;g&gt;</p>]]></content:encoded>
    </item>
    <item>
      <title>Tune in to the Visual Studio 2012 Launch</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/tune-in-to-the-visual-studio-2012-launch</link>
      <pubDate>Wed, 12 Sep 2012 10:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/09/12/tune-in-to-the-visual-studio-2012-launch/</guid>
      <description><![CDATA[This morning we kicked off the VS 2012 launch with an event in Seattle. You can tune in to the...]]></description>
      <content:encoded><![CDATA[<p>This morning we kicked off the VS 2012 launch with an event in Seattle. You can tune in to the online coverage at <a href="http://www.visualstudiolaunch.com/">http://www.visualstudiolaunch.com/</a> for live interviews and session recordings. In this blog post, I’ll share some of the info I presented at today’s event.</p>  <h2>Modern Applications</h2>  <p>It’s a really cool time to be a consumer today. New smart phones, tablets, ultrabooks, and lots of cool gadgets are coming out all the time. In this world, users have become accustomed to having a lot of choice in their applications and they expect to see certain features from the start (connected, touch, etc). We are also increasingly seeing more demand for these same types of features in the Enterprise. With products like Yammer, social has crossed over from networking with friends to my teammates. Finally, users are becoming accustomed to getting new features faster than ever before. If we want to be successful in this new world we will have to change up the way we are creating software.</p>  <p>The question for developers is how do we build such applications and do it with the fastest time to market? We will need a system that allows us to build out business and transactional logic at scale, exposing things in a way that we can handle many heterogeneous device types, with team software to speed up delivery. Today’s keynote walks you through how Visual Studio helps you solve these problems.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6557.image_662FCE30.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6557.image_5F00_662FCE30.png" target="_blank"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1777.image_thumb_09EE172D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1777.image_5F00_thumb_5F00_09EE172D.png" width="730" height="359" /></a></p>  <h2>Visual Studio 2012</h2>  <p>These trends are exciting, and provide compelling ways for users to interact with your apps. But they also present new challenges when it comes to the development of your apps. These are the kinds of things we had in mind when designing Visual Studio 2012 and .NET Framework 4.5.</p>  <p>We wanted to make sure that you could start with your existing software assets, and bring them forward to take advantage of the latest platforms. Using Visual Studio 2012, you’ll find that you can target a variety of Microsoft and non-Microsoft clients. You can also create backend services using SharePoint, SQL Server, Windows Azure, and Windows Server. And finally, you can manage your app in production using System Center integration.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7450.image_578A43AD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7450.image_5F00_578A43AD.png" target="_blank"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5808.image_thumb_64F056B3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5808.image_5F00_thumb_5F00_64F056B3.png" width="730" height="383" /></a></p>  <h2>Continuous Services</h2>  <p>When designing the backend services for your app, you need them to scale to the demand, to be accessible from different clients, and to be able to leverage both cloud and on-premise components. VS 2012 and .NET Framework 4.5 contain the tools and technologies to help you be successful here. (Many of these are actually <a href="http://blogs.msdn.com/b/jasonz/archive/tags/favorite+feature/">“favorite features”</a> that I’ve blogged about before. ;-) ) <a href="http://blogs.msdn.com/b/jasonz/archive/2012/07/23/my-favorite-features-entity-framework-code-first-and-asp-net-web-api.aspx">ASP.NET Web API and Entity Framework Code First</a> are two useful .NET features for building your services. With EF Code First, you can start by defining classes that represent the data model, and let EF create the database tables for you. Then you can create a Web API controller to expose the data as an HTTP-based service, which can be consumed using REST, JSON, or XML. This makes it really easy to access the service from a variety of clients, so you can build a set of companion apps for phones, tablets and browsers, across any platform.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1754.image_6F736726.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1754.image_5F00_6F736726.png" target="_blank"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1185.image_thumb_3D0F93A7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1185.image_5F00_thumb_5F00_3D0F93A7.png" width="454" height="478" /></a></p>  <p><i>New ASP.NET Web API project</i></p>  <h2>Web Experiences</h2>  <p>One place you’ll want to consume these services is from a website - this is where you’ll get to take advantage of the latest web tooling features in VS 2012. You’ll find enhancements like <a href="http://blogs.msdn.com/b/jasonz/archive/2012/05/10/my-favorite-features-improved-tooling-in-visual-studio-11-for-javascript-developers.aspx">JavaScript IntelliSense</a> and debugging, HTML 5 schema validation, DOM Explorer, and new code snippets. Also check out the new Page Inspector, which allows you to analyze running web pages and find the code that generated each HTML element:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2262.image_7FBC7CBF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2262.image_5F00_7FBC7CBF.png" target="_blank"><img title="image" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1373.image_thumb_5B2AEF3B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1373.image_5F00_thumb_5F00_5B2AEF3B.png" width="734" height="442" /></a></p>  <p>Finally, when you’re all done, you can use the Visual Studio Publish wizard to deploy the website to Windows Azure.</p>  <h2>Connected Devices</h2>  <p>Once you have your services set up, you’ll want to access them (by consuming the Web API) from the client apps running on your connected devices. These apps might include existing desktop apps, a new Windows Store app, a Windows Phone app, or an app for another platform. VS 2012 introduces new features to help with the development of these apps, such as the C# &amp; VB async and await keywords, which simplify asynchronous programming, resulting in more responsive apps. You’ll also find a new and enhanced XAML editor within Visual Studio, as well as design tools for Windows Store apps in Blend for Visual Studio 2012. In case you decide to create Windows Store versions of your existing desktop apps, VS 2012 includes portable libraries which allow you to refactor your application logic so that it can be consumed from both the WPF and Windows Store app (as well as Windows Phone, and a variety of other clients you might have plans for down the road…). We’ve also added great C++ graphics tools in this release for both editing, using the Vertex Shader, Pixel Shader and Output Merger, as well as debugging, using the pixel history and other diagnostic tools:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6177.GraphicsTools_6BC76938.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6177.GraphicsTools_5F00_6BC76938.png" target="_blank"><img title="GraphicsTools" style="display: inline; background-image: none;" border="0" alt="GraphicsTools" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0207.GraphicsTools_thumb_2C8E60FD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0207.GraphicsTools_5F00_thumb_5F00_2C8E60FD.png" width="734" height="393" /></a></p>  <h2>Conclusion</h2>  <p>This is really just a glimpse into how you can use VS 2012 and .NET 4.5 to build modern apps that “wow” your users. Make sure to catch the full coverage from today’s event on <a href="http://www.visualstudiolaunch.com/">http://www.visualstudiolaunch.com/</a>. You can also read about the announcements we made today from <a href="http://blogs.msdn.com/b/somasegar/archive/2012/09/12/visual-studio-2012-and-net-4-5-launch.aspx">Soma</a>, <a href="http://blogs.msdn.com/b/bharry/archive/2012/09/12/visual-studio-update-this-fall.aspx">Brian</a> and the <a href="http://blogs.msdn.com/b/visualstudio/archive/2012/09/12/visual-studio-express-2012-for-windows-desktop-is-here.aspx">Visual Studio team blog</a>. </p>  <p>&#160;</p>  <p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>https://twitter.com/jlzander</i></a><i>.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio 2012 and .NET Framework 4.5 released to the web!</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/visual-studio-2012-and-net-framework-4-5-released-to-the-web</link>
      <pubDate>Wed, 15 Aug 2012 10:50:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/08/15/visual-studio-2012-and-net-framework-4-5-released-to-the-web/</guid>
      <description><![CDATA[I&rsquo;m thrilled to announce that this morning we released Visual Studio 2012, Team Foundation...]]></description>
      <content:encoded><![CDATA[<p>I&rsquo;m thrilled to announce that this morning we released Visual Studio 2012, Team Foundation Server 2012, and .NET Framework 4.5 to the web. It&rsquo;s time to start your engines, and begin downloading today!</p>
<p>MSDN Subscribers can download immediately at the <a href="http://go.microsoft.com/fwlink/?LinkID=207267">MSDN Subscriber Download Page</a>, and volume licensing customers will be able to download starting tomorrow from the <a href="https://www.microsoft.com/Licensing/servicecenter">Volume Licensing Service Center</a>. You&rsquo;ll also be able to find the product in stores in the next month or so, as well as some availability to purchase through the <a href="http://go.microsoft.com/fwlink/?linkid=242143">Visual Studio product website</a> in the next few days. Finally, to evaluate the free trial versions or download our free Express products, please visit the <a href="http://go.microsoft.com/fwlink/?linkid=240162">Visual Studio product website</a> today.</p>
<p>This has been a great release for the team, and I&rsquo;m really excited about all that we&rsquo;ve accomplished. By adopting agile practices, and using our IDE and ALM tools, we&rsquo;ve been able to complete the release in half as many milestones this time around. Here&rsquo;s a picture of our release team, signing off on the final build:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6215.P1060432_4AED5585.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6215.P1060432_5F00_4AED5585.jpg" target="_blank"><img width="734" height="439" title="P1060432" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="P1060432" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4743.P1060432_thumb_738BC18C.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4743.P1060432_5F00_thumb_5F00_738BC18C.jpg" border="0" /></a></p>
<p>Developing great apps for Windows 8 is an important goal of this release. Therefore, in coordination with today&rsquo;s developer tools releases, you&rsquo;ll notice that the final version of Windows 8 has <a href="http://msdn.microsoft.com/en-US/windows/apps/br229516/">released to the web</a> as well. Furthermore, in addition to the Blend tools that ship with Visual Studio 2012 RTM, today we also released a new <a href="http://go.microsoft.com/fwlink/?linkid=261803">Blend + SketchFlow Preview for Visual Studio 2012</a> that addresses some top Blend customer requests, including support for WPF, Silverlight, and SketchFlow.&nbsp; For more details, check out <a href="http://blendinsider.com/">BlendInsider</a>, the Blend team blog.</p>
<h2>Top 12 of Visual Studio 2012</h2>
<p>In case you&rsquo;re still deciding whether to download Visual Studio 2012, or haven&rsquo;t been keeping up with all the news about the release, I&rsquo;ll leave you with 12 good reasons to upgrade today. ;-)</p>
<h3>#1) Develop for Windows 8</h3>
<p>Visual Studio 2012 contains all the tools you need to develop killer apps for Windows 8, from templates, to designers, to testing, to debugging. <a href="http://blendinsider.com/">Blend</a> now comes with the Visual Studio installation providing rich visual tools for creating Windows store apps using HTML/CSS and XAML. Using these tools, you&rsquo;ll find everything you need to develop a great app and submit it to the Windows Store.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4118.NewProject_3AD247D5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4118.NewProject_5F00_3AD247D5.png" target="_blank"><img width="734" height="509" title="NewProject" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="NewProject" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8132.NewProject_thumb_365BC70E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8132.NewProject_5F00_thumb_5F00_365BC70E.png" border="0" /></a></p>
<p>For more information, see the <a href="http://blogs.msdn.com/b/windowsappdev/">Windows 8 App Developer Blog</a> and the <a href="http://msdn.microsoft.com/en-US/windows/apps">Windows Dev Center</a>.</p>
<h3>#2) Develop for the Web</h3>
<p>Visual Studio 2012 and .NET 4.5 provide the <a href="http://msdn.microsoft.com/en-us/library/hh420390(v=VS.110).aspx#whatsnew_feature">latest advances in ASP.NET</a> including web optimization improvements (minification and bundling), new templates, HTML &amp; CSS editor improvements, page inspector, and new publishing tools. We&rsquo;ve added new features to support <a href="http://blogs.msdn.com/b/jasonz/archive/2012/05/10/my-favorite-features-improved-tooling-in-visual-studio-11-for-javascript-developers.aspx">JavaScript development</a> including IntelliSense improvements, a new DOM explorer, and a JavaScript console. For more information, check out the <a href="http://blogs.msdn.com/b/webdev/">Web Development team blog</a>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7382.MvcApplication4-Running---Microsoft-Visual-Studio-10_0C8A2283.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7382.MvcApplication4_2D00_Running_2D002D002D00_Microsoft_2D00_Visual_2D00_Studio_2D00_10_5F00_0C8A2283.png" target="_blank"><img width="734" height="475" title="MvcApplication4 (Running) - Microsoft Visual Studio (10)" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="MvcApplication4 (Running) - Microsoft Visual Studio (10)" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5633.MvcApplication4-Running---Microsoft-Visual-Studio-10_thumb_54D76852.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5633.MvcApplication4_2D00_Running_2D002D002D00_Microsoft_2D00_Visual_2D00_Studio_2D00_10_5F00_thumb_5F00_54D76852.png" border="0" /></a></p>
<p><i>Page Inspector</i></p>
<h3>#3) Develop for Windows Phone 8</h3>
<p>Visual Studio 2012 will provide support for developing Windows Phone 8 applications (both with a Express SKU as well as a freely downloadable plug-in for VS Pro and above). This will come online in the future, once Windows Phone 8 and the developer SDK become available. Some <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2012/06/29/recapping-windows-phone-8-developer-news.aspx">new features</a> to look forward to include native C++ support, the ability to target both Windows Phone 7.x and Windows Phone 8 applications, multi-chassis support, and enterprise publishing. Stay tuned for more info from the <a href="http://windowsteamblog.com/windows_phone/b/wpdev/">Windows Phone team</a>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7651.marblemaze_complete_phone_4DA6B32D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7651.marblemaze_5F00_complete_5F00_phone_5F00_4DA6B32D.png" target="_blank"><img width="734" height="442" title="marblemaze_complete_phone" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="marblemaze_complete_phone" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5516.marblemaze_complete_phone_thumb_32959632.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5516.marblemaze_5F00_complete_5F00_phone_5F00_thumb_5F00_32959632.png" border="0" /></a></p>
<p><em>C++ Windows Phone 8 Application</em></p>
<h3>#4) Develop for Windows Azure</h3>
<p>Visual Studio provides the best possible tools to develop your cloud services. In Visual Studio 2012, you&rsquo;ll notice <a href="http://blogs.msdn.com/b/jasonz/archive/2012/06/07/announcing-the-june-2012-release-of-windows-azure-sdk-for-net-now-with-support-for-visual-studio-2012-rc.aspx">cloud tooling improvements</a> including support for distributed caching, new publishing options, new templates, and a lower install footprint. Using <a href="http://tfspreview.com/">Team Foundation Service</a> with Windows Azure, you can now achieve <a href="http://blogs.msdn.com/b/bharry/archive/2012/06/07/announcing-continuous-deployment-to-azure-with-team-foundation-service.aspx">continuous integration and continuous deployment</a> of your software. For more information, please visit the <a href="http://www.windowsazure.com/en-us/develop/net/">Windows Azure .NET Developer</a> center, and download today&rsquo;s release of the <a href="http://www.windowsazure.com/en-us/develop/net/">Windows Azure SDK for .NET</a>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6403.Deployed-Builds-in-TFS-Portal_6003834D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6403.Deployed_2D00_Builds_2D00_in_2D00_TFS_2D00_Portal_5F00_6003834D.png" target="_blank"><img width="676" height="421" title="Deployed Builds in TFS Portal" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="Deployed Builds in TFS Portal" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7853.Deployed-Builds-in-TFS-Portal_thumb_14A3DF89.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7853.Deployed_2D00_Builds_2D00_in_2D00_TFS_2D00_Portal_5F00_thumb_5F00_14A3DF89.png" border="0" /></a></p>
<p><i>Deployment history</i></p>
<h3>#5) Develop Business Applications</h3>
<p>Visual Studio 2012 contains a variety of tools for developing business applications. SharePoint developers will find new designers for list and content types, new templates for site columns and Silverlight web pages, as well as new options for deploying SharePoint sites. ALM features like performance profiling, unit testing, and IntelliTrace are now available for SharePoint development. Client-side development has been improved as well, with support for JavaScript debugging and IntelliSense. For more information, please visit the <a href="http://blogs.msdn.com/b/sharepointdev/">SharePoint developer team blog</a>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6661.ListDesigner_0202187A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6661.ListDesigner_5F00_0202187A.png" target="_blank"><img width="734" height="393" title="ListDesigner" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="ListDesigner" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5001.ListDesigner_thumb_3AACC287.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5001.ListDesigner_5F00_thumb_5F00_3AACC287.png" border="0" /></a></p>
<p><i>SharePoint List Designer</i></p>
<p>Meanwhile, we&rsquo;ve also announced a <a href="http://blogs.msdn.com/b/officeapps/archive/2012/07/17/introducing-the-new-office-cloud-app-model.aspx">new app model</a> for Office and SharePoint 2013, which enables you to host your apps in the cloud, and to use web technologies to develop them. Visual Studio 2012, along with the <a href="http://go.microsoft.com/fwlink/?LinkID=261869">Microsoft Office Developer Tools for Visual Studio 2012 &ndash; Preview</a>, gives you the tools to program with the new app models for Office and SharePoint. To learn more and get started building apps for Office &amp; SharePoint 2013, head to <a href="http://dev.office.com">http://dev.office.com</a>.</p>
<p>LightSwitch is a powerful tool available for building business applications for the Desktop and the Cloud. Starting in Visual Studio 2012, LightSwitch is available as part of the Visual Studio Professional, Premium and Ultimate installations. LightSwitch includes a variety of improvements in Visual Studio 2012, such as a new <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/03/15/lightswitch-cosmopolitan-shell-and-theme-for-visual-studio-11-beta-released.aspx">theme</a>, the ability to <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/03/22/lightswitch-architecture-odata.aspx">access data from any OData source as well as create OData services</a>, <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/04/03/active-directory-group-support-matt-thalman.aspx">Active Directory integration</a>, and <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/03/28/new-business-types-percent-amp-web-address-andrew-lader.aspx">new business types</a>. We also are working on <a href="http://msdn.microsoft.com/en-US/vstudio/htmlclient">support for HTML clients</a>, which will be available as an add-on to VS2012. To learn more, please visit the <a href="http://msdn.com/lightswitch/">LightSwitch Developer Center</a> and the <a href="http://blogs.msdn.com/b/lightswitch/">LightSwitch team blog</a>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0511.LS_6A57385E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0511.LS_5F00_6A57385E.png" target="_blank"><img width="730" height="557" title="LS" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="LS" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5707.LS_thumb_2370A612.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5707.LS_5F00_thumb_5F00_2370A612.png" border="0" /></a></p>
<p><i>LightSwitch in Visual Studio 2012</i><i></i></p>
<h3>#6) Develop Games and other 3D Applications</h3>
<p>Visual Studio 2012 includes graphics tools to help game developers become more productive, making it easier to build innovative games. From debugging DirectX graphics, to designing and coding DirectX shaders (HLSL), to inspecting and manipulating graphics assets (images and models), Visual Studio 2012 provides all the functionality you need to build graphically rich 2D/3D applications.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5633.GraphicsImage---Game_3B171786.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5633.GraphicsImage_2D002D002D00_Game_5F00_3B171786.png" target="_blank"><img width="734" height="445" title="GraphicsImage - Game" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="GraphicsImage - Game" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1106.GraphicsImage---Game_thumb_363463CA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1106.GraphicsImage_2D002D002D00_Game_5F00_thumb_5F00_363463CA.png" border="0" /></a></p>
<p><em>Visual Studio 2012 Graphics Diagnostics Tools</em></p>
<h3>#7) Take advantage of the latest language advancements</h3>
<p>If you&rsquo;re developing in C# or Visual Basic, you can take advantage of the language new features in Visual Studio 2012 and .NET 4.5 for <a href="http://msdn.microsoft.com/en-us/library/hh191443(v=VS.110).aspx">asynchronous programming</a>. Using the new async and await keywords, you can write asynchronous code that looks a lot like the synchronous version:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3414.Async_24526BF5.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3414.Async_5F00_24526BF5.jpg" target="_blank"><img width="734" height="375" title="Async" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="Async" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0876.Async_thumb_4D5D0AF1.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0876.Async_5F00_thumb_5F00_4D5D0AF1.jpg" border="0" /></a></p>
<p>The <a href="http://msdn.microsoft.com/en-us/library/hh409293(v=vs.110)">C++ support in Visual Studio 2012</a> includes the full C++ 11 standard library as well as new language features: stateless lambdas, <a href="http://blogs.msdn.com/b/vcblog/archive/2012/04/06/10291485.aspx">SCARY iterators</a>, range-based for loops, and scoped enumerations support. Visual C++ 11 also adds seamless access to Windows Runtime components through C++/CX as well as C++ Accelerated Massive Parallelism (C++ AMP), which enables hardware acceleration for the execution of your data-parallel C++ code.</p>
<p>For JavaScript development, please see more details about the improvements we&rsquo;ve made in the Web development section above.</p>
<p>Lastly, if you&rsquo;re using F#, you&rsquo;ll enjoy improvements for information-rich programming, which enable you to program directly against data services, and are made possible by <a href="http://msdn.microsoft.com/en-us/library/hh156509(v=vs.110)">F# type providers</a> and LINQ queries.</p>
<h3>#8) Performance, Reliability, and Compatibility Improvements</h3>
<p>In addition to adding new features, we&rsquo;ve also invested heavily to improve the core capabilities of the product. For example, we&rsquo;ve <a href="http://blogs.msdn.com/b/visualstudio/archive/tags/performance/">invested in performance</a> and made significant improvements in areas such as the toolbox, typing and editing, debugging, and solution loading time.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3125.SolutionLoad_5E7F14E1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3125.SolutionLoad_5F00_5E7F14E1.png" target="_blank"><img width="629" height="367" title="SolutionLoad" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="SolutionLoad" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4214.SolutionLoad_thumb_575FD869.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4214.SolutionLoad_5F00_thumb_5F00_575FD869.png" border="0" /></a></p>
<p>We&rsquo;ve also taken care to improve the backward <a href="http://blogs.msdn.com/b/visualstudio/archive/2012/03/28/round-tripping-with-visual-studio-11.aspx">compatibility</a> of Visual Studio 2012, and enabled you to continue collaborating on projects with teammates using Visual Studio 2010 SP1.</p>
<h3>#9) New IDE Productivity Features</h3>
<p>The Visual Studio 2012 user interface includes an updated look and feel, which is consistent with the latest Microsoft products, and designed to focus your attention on the code. The overall environment has been streamlined, including simplified toolbars, a lightweight Find dialog, and less tab clutter by previewing files rather than opening them during debugging. Using Quick Launch, you can now search the IDE for any menu or command.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2727.IDE_54982C53.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2727.IDE_5F00_54982C53.png" target="_blank"><img width="734" height="396" title="IDE" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="IDE" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3716.IDE_thumb_36B9A852.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3716.IDE_5F00_thumb_5F00_36B9A852.png" border="0" /></a></p>
<p><i>New Find Dialog</i></p>
<h3>#10) Improve your code quality with enhanced testing tools</h3>
<p>Visual Studio 2012 includes a wealth of testing tools.</p>
<p>Microsoft Test Manager 2012 has been enhanced to embrace exploratory testing (sometimes called agile testing), which allows you to explore the product in any way you want while keeping relevant steps and data that can be used to directly file bugs and feedback:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2158.Exploratory-Testing_4E06A3E6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2158.Exploratory_2D00_Testing_5F00_4E06A3E6.png" target="_blank"><img width="734" height="415" title="Exploratory Testing" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="Exploratory Testing" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2555.Exploratory-Testing_thumb_2908E36D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2555.Exploratory_2D00_Testing_5F00_thumb_5F00_2908E36D.png" border="0" /></a></p>
<p>Lab Management has also been greatly simplified in this release with the consolidation of agents and the introduction of standard environments, which allow you to benefit from build-deploy-test workflows without the dependency on Hyper-V or <a href="http://technet.microsoft.com/en-us/library/gg610610.aspx">SCVMM</a>.</p>
<p>With Visual Studio 2012, we now provide the ability for you to include additional adapters to support 3rd party unit testing frameworks such as xUnit.net, NUnit, and others. The new Test Explorer will showcase all of the tests across your solution regardless of which testing framework they were written for. Visual Studio 2012 will continue to provide support for traditional unit tests written using the classic Visual Studio Unit Testing Framework, and adds support for writing tests in C++ as well.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0181.Unit-Testing_645C492B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0181.Unit_2D00_Testing_5F00_645C492B.png" target="_blank"><img width="734" height="415" title="Unit Testing" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="Unit Testing" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8422.Unit-Testing_thumb_2D15C1F0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8422.Unit_2D00_Testing_5F00_thumb_5F00_2D15C1F0.png" border="0" /></a></p>
<p><i>New Test Explorer</i></p>
<h3>#11) Reduce cycle times using tools for agile practices</h3>
<p>Visual Studio 2012 contains a variety of tools to create transparency between team members, reduce waste, and accelerate the flow of the project. As you set out to start the project, <a href="http://blogs.msdn.com/b/jasonz/archive/2012/05/24/my-favorite-features-creating-storyboards-with-powerpoint.aspx">PowerPoint storyboarding</a> is a useful way to communicate the requirements of the software. When you get further along, the Microsoft Feedback Client can be used to gather feedback on the working bits from external stakeholders.</p>
<p>Team Foundation Server 2012 provides a rich toolset for planning out your sprints, managing the backlog, and tracking progress. I recommend reading <a href="http://blogs.msdn.com/b/jasonz/archive/2012/05/29/my-favorite-features-managing-projects-with-the-backlog-sprint-planning-and-taskboard-features-in-team-foundation-server-11.aspx">my earlier post</a>, where I explored these features in detail. As an example, below is a picture of the taskboard, which can be used to easily edit work items during a standup meeting:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1856.Taskboard---TFS_258A2EF5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1856.Taskboard_2D002D002D00_TFS_5F00_258A2EF5.png" target="_blank"><img width="734" height="451" title="Taskboard - TFS" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="Taskboard - TFS" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3426.Taskboard---TFS_thumb_00F8A171.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3426.Taskboard_2D002D002D00_TFS_5F00_thumb_5F00_00F8A171.png" border="0" /></a></p>
<h3>#12) Deliver Cloud-Based Services with Smoother Collaboration between Operations and Engineering</h3>
<p>Each release of our ALM tools, we&rsquo;ve integrated additional roles to improve collaboration across the team, and decrease cycle time. This release, we&rsquo;re including operations, which is increasingly important for today&rsquo;s cloud-based services apps. Many of you are already using System Center to monitor your applications in production. This release, we&rsquo;ve introduced a new <a href="http://blogs.msdn.com/b/jasonz/archive/2012/04/17/better-together-tfs-2010-and-system-center-2012.aspx">management pack</a>, which will allow critical production issues detected by System Center 2012 SP1 to be immediately assigned to the development team with high quality diagnostic information via TFS and Visual Studio.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8004.1667.SCOM-TFS_APM_Alert1_6EB28EED.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8004.1667.SCOM_2D00_TFS_5F00_APM_5F00_Alert1_5F00_6EB28EED.png" target="_blank"><img width="734" height="552" title="1667.SCOM-TFS_APM_Alert[1]" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" alt="1667.SCOM-TFS_APM_Alert[1]" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7411.1667.SCOM-TFS_APM_Alert1_thumb_15147239.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7411.1667.SCOM_2D00_TFS_5F00_APM_5F00_Alert1_5F00_thumb_5F00_15147239.png" border="0" /></a></p>
<p><i>System Center Operations Manager</i></p>
<p>These kinds of tools for operations and engineering are something we plan to continue delivering in the future. For example, System Center 2012 SP1 will also introduce &ldquo;Global Service Monitor&rdquo; (GSM), which allows you to monitor your application&rsquo;s functionality, performance, and uptime from multiple endpoints around the world.</p>
<h2>Conclusion</h2>
<p>I&rsquo;m very excited for the bits to be out and available for <a href="http://go.microsoft.com/fwlink/?linkid=240162">download</a>! As you can see, there are a ton of new capabilities in this release, which is now the best version of Visual Studio we&rsquo;ve ever shipped. I look forward to seeing all the amazing things that you will do with it. I hope this post gave you a glimpse of what&rsquo;s in store. To learn more, I invite you to join us on September 12<sup>th</sup> for the Visual Studio 2012 Launch event online at <a href="http://www.visualstudiolaunch.com/">http://www.visualstudiolaunch.com/</a>.</p>
<p>&nbsp;</p>
<p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>https://twitter.com/jlzander</i></a><i>.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Final Build for VS 2012 - Availability and Launch Dates Ahead</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/final-build-for-vs-2012-availability-and-launch-dates-ahead</link>
      <pubDate>Wed, 01 Aug 2012 09:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/08/01/final-build-for-vs-2012-availability-and-launch-dates-ahead/</guid>
      <description><![CDATA[The final build of Visual Studio 2012 is now complete! The engineering team is finished and is now...]]></description>
      <content:encoded><![CDATA[<p>The final build of Visual Studio 2012 is now complete! The engineering team is finished and is now preparing the build for our numerous distribution channels.</p>
<p>I&rsquo;d also like to congratulate the Windows 8 team for completing their important release to manufacturing today. You can read more from the Windows team on the&nbsp; <a href="http://blogs.msdn.com/b/b8/">Building Windows 8</a> blog.</p>
<p>I&rsquo;m looking forward to our next milestone when we make Visual Studio 2012 available for everyone to download from MSDN and elsewhere on August 15<sup>th</sup>. Watch my blog for the official release information.</p>
<p>Finally, I&rsquo;d like to invite you to join Soma and me on September 12<sup>th</sup> as we officially launch Visual Studio 2012 via a live online event. For more information, please visit <a title="http://www.visualstudiolaunch.com/" href="http://www.visualstudiolaunch.com/">http://www.visualstudiolaunch.com/</a>. I hope you will tune in to learn more about all the new capabilities in VS 2012.</p>
<p>Exciting times ahead!</p>
<p>&nbsp;</p>
<p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>https://twitter.com/jlzander</i></a><i>. </i></p>]]></content:encoded>
    </item>
    <item>
      <title>My Favorite Features: Entity Framework Code First and ASP.NET Web API</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/my-favorite-features-entity-framework-code-first-and-asp-net-web-api</link>
      <pubDate>Mon, 23 Jul 2012 11:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/07/23/my-favorite-features-entity-framework-code-first-and-asp-net-web-api/</guid>
      <description><![CDATA[It&rsquo;s an exciting time for Entity Framework! Last Thursday, the team announced an open source...]]></description>
      <content:encoded><![CDATA[<p>It&rsquo;s an exciting time for Entity Framework! Last Thursday, the team <a href="http://blogs.msdn.com/b/adonet/archive/2012/07/19/entity-framework-and-open-source.aspx">announced</a> an open source release, which is now available on the <a href="http://entityframework.codeplex.com/">Entity Framework CodePlex Site</a>. I&rsquo;ve been using Entity Framework quite a bit in my personal development, and thought I&rsquo;d use this opportunity to continue my <a href="http://blogs.msdn.com/b/jasonz/archive/tags/favorite+feature/">&ldquo;Favorite Features&rdquo; series</a> with a post on EF.</p>
<p>In this post, I&rsquo;m going to use the Code First workflow in Entity Framework to build an application. Entity Framework originally shipped as part of the .NET Framework, but in an effort to ship more often the last few versions have been shipped on <a href="http://nuget.org/packages/EntityFramework">NuGet</a>, in-between releases of the .NET Framework. In addition to being available on NuGet, the latest version of Entity Framework (EF5) is also included in a number of places in Visual Studio 2012.</p>
<p>As part of building the app, I&rsquo;ll also use <a href="http://www.asp.net/web-api">ASP.NET Web API</a> to build an HTTP service. ASP.NET Web API is another favorite feature of mine, and is great way to create services that can be consumed from different clients.</p>
<h3>What&rsquo;s New in EF5</h3>
<p>I thought I&rsquo;d start with a quick recap of the new features in Entity Framework 5, some of which we&rsquo;ll get to use in this post. I&rsquo;ve been looking forward to a number of these, and am happy to see them added in the latest release.</p>
<p>New features in Entity Framework 5:</p>
<p>&middot; <b>Enum support</b> is a long awaited feature for EF and allows you to have enum properties in your domain classes. EF5 makes enum support available in the EF Designer and Code First.</p>
<p>&middot; <b>Table-valued functions</b> in an existing database can now be included in models that are created using the EF Designer.</p>
<p>&middot; <b>Spatial data types</b> can now be exposed in your model using the DbGeography and DbGeometry types. Spatial data can be included in models created with the EF Designer or Code First.</p>
<p>&middot; EF5 also includes some significant <b>performance improvements</b> which you can find out more about on the <a href="http://blogs.msdn.com/b/adonet/archive/2012/02/14/sneak-preview-entity-framework-5-0-performance-improvements.aspx">ADO.NET Blog</a>.</p>
<p>The EF Designer, which is included in Visual Studio 2012, also has some new features:</p>
<p>&middot; Models can now be split up into <b>multiple diagrams</b>, which is great for working with larger models. You can also <b>apply coloring to entities</b> to help identify subsections of your model.</p>
<p>&middot; Improvements to the wizard that reverse engineers a model from a database make it easier and quicker to <b>batch</b> <b>import stored procedures</b> for querying data.</p>
<h3>Creating the Application</h3>
<p>One of the places that EF5 shows up in Visual Studio 2012 is the project template for ASP.NET Web API, so if you create a new ASP.NET Web API project you have Entity Framework 5 available in your project by default.</p>
<p>In this post, I&rsquo;ll create a simple web application to help folks find interesting tourist attractions. I&rsquo;ll create a web page to help them locate the tourist attraction closest to a given location. Rather than having the web page communicate directly with the database, I&rsquo;ll create a Web API to expose the data, so that applications on a variety of platforms can also access the data.</p>
<p>I&rsquo;ll start by creating a new MVC 4 application, targeting .NET 4.5, and select the &lsquo;Web API&rsquo; template.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4643.NewProject_424F7029.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4643.NewProject_5F00_424F7029.png" target="_blank"><img width="687" height="622" title="NewProject" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="NewProject" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1732.NewProject_thumb_0FEB9CAA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1732.NewProject_5F00_thumb_5F00_0FEB9CAA.png" border="0" /></a></p>
<h3>Building a Model</h3>
<p>One of the great things about Code First is that building your model is as simple as defining a set of classes. If needed, you can also supply additional configuration to define what the database looks like and how your classes map to the database.</p>
<p>In the Models folder of my project I&rsquo;ll add a Models.cs file that contains the following classes.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">using</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> System.Collections.Generic;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">using</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> System.Data.Spatial;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">namespace</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> TouristAttractions.Models</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">class</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">TouristAttraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">int</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> TouristAttractionId { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">string</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Name { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">DbGeography</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Location { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">List</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">&lt;</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">Review</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">&gt; Reviews { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">class</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">Review</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">int</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> ReviewId { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">string</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Author { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">string</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Comments { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">int</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> TouristAttractionId { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> TouristAttraction { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">}</span></span></span></p>
<h3>Adding an API Controller</h3>
<p>Now that I have a model, I&rsquo;m going to create an API controller that allows me to read and write tourist attractions. An API controller is similar to an MVC controller, except it is consumed as a service rather than hooked up to a set of views.<b></b></p>
<p>I need to first build the application before I add a controller. Next I&rsquo;ll right-click on Controllers folder and select &lsquo;Add-&gt;Controller&hellip;&rsquo; from the context menu. I&rsquo;ll name the new controller &lsquo;AttractionsController&rsquo;, and select the &lsquo;API controller with read/write actions, using Entity Framework&rsquo; template. This template will generate code that uses Entity Framework to read and write instances of my TouristAttraction class.</p>
<p>I can also specify which Entity Framework context I want to use for data access. A context is a class that represents a session with the database and allows me to read and write data. I haven&rsquo;t created a context yet, so I&rsquo;ll select &lt;New data context&hellip;&gt; from the list, and a new context will be created for me (I&rsquo;ll call it TourismContext).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5545.AddController_68B15374.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5545.AddController_5F00_68B15374.png" target="_blank"><img width="608" height="397" title="AddController" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="AddController" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4062.AddController_thumb_6B5A0F25.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4062.AddController_5F00_thumb_5F00_6B5A0F25.png" border="0" /></a></p>
<p>When I complete the Add Controller Wizard, a number of items get added to my project. The new TourismContext that I asked the wizard to create has been added to the Models folder. This class derives from DbContext, which is the primary API of Entity Framework. The context also exposes a DbSet for each type that I want to access. DbContext has a set of conventions to pick a database to try and use, but ASP.NET Web API has overridden these conventions and told my context to load its connection information from the config file (using the &ldquo;name=&rdquo; syntax in the constructor).</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">public</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">class</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TourismContext</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> : </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #2b91af;" color="#2b91af">DbContext</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> TourismContext() : </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">base</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"name=TourismContext"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">{ </span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">DbSet</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">&lt;</span><span><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">&gt; </span><span>TouristAttractions<span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> { </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">}</span></span></span><span></span></p>
<p>Sure enough, if I look in Web.config I find the TourismContext connection string, pointing my context to a LocalDb database called TourismContext (followed by a timestamp to ensure it doesn&rsquo;t collide with any previous ASP.NET Web API projects).</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">connectionStrings</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">&lt;</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">add</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">name</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">=</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">"</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">TourismContext</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">"</span></span></span><span style="font-size: 9.5pt;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"> <br /><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">connectionString</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">=</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">"</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">Data Source=(localdb)\v11.0; Initial Catalog=TourismContext-20120618160809; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|TourismContext-20120618160809.mdf</span></span></span></span><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">" <br /><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">providerName</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">=</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">"</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">System.Data.SqlClient</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff"> /&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: 13pt;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; line-height: 11pt; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp; </span></span><span style="font-size: 9.5pt;">&lt;/</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; line-height: 11pt; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">connectionStrings</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; line-height: 11pt; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="line-height: 11pt;"></span></p>
<p>Finally, the API controller itself has been added to the Controllers folder. The controller is coded up to support getting all TouristAttractions, finding a TouristAttraction with a certain key, and adding, updating and deleting TouristAttractions. I&rsquo;ll just show part of the generated code for the sake of brevity:</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">public</span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">class</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">AttractionsController</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> : </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">ApiController</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">private</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TourismContext</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> db = </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TourismContext</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">();</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #008000;" color="#008000">// GET api/Attractions</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">IEnumerable</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">&lt;</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">&gt; GetTouristAttractions()</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">return</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> db.TouristAttractions.AsEnumerable();</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #008000;" color="#008000">// GET api/Attractions/5</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> GetTouristAttraction(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">int</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> id)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> touristattraction = db.TouristAttractions.Find(id);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">if</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> (touristattraction == </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">null</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">throw</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">HttpResponseException</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">(Request.CreateResponse(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">HttpStatusCode</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">.NotFound));</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">return</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> touristattraction;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: 13pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; line-height: 12pt; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span><span style="line-height: 12pt;"><span style="font-size: 10pt;"> <br /> <br /></span><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span>... <br /> <br /></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">}</span></span></span></span></p>
<p>I&rsquo;ll also add a new GetTouristAttraction method to AttractionsController, that takes some coordinates and finds the closest attraction.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">public</span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> GetTouristAttraction(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">double</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> longitude, </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">double</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> latitude)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> location = </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">DbGeography</span></span></span></span><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">.FromText( <br /><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">string</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">.Format(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"POINT ({0} {1})"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">, longitude, latitude));</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> query = </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">from</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> a </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">in</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> db.TouristAttractions</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">orderby</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> a.Location.Distance(location)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">select</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> a;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">return</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> query.FirstOrDefault();</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">}</span></span></span><span></span></p>
<h3>Consuming the Web API</h3>
<p>Because ASP.NET Web API uses the basics of HTTP for communication, my service can be consumed from any number of platforms and technologies. As just one example, I&rsquo;ll build a simple web page that accesses the service from JavaScript.</p>
<p>I&rsquo;ll replace the contents of Views\Home\Index.cshtml with the following code:</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;!</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">DOCTYPE</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">html</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">PUBLIC</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">"-//W3C//DTD XHTML 1.0 Transitional//EN"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">html</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">lang</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">="en"&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">head</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">title</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&gt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">Find Nearest Attraction</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">title</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">meta</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">http-equiv</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="Content-Type"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">content</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="text/html; charset=utf-8"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">/&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">script</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">charset</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="UTF-8"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">type</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="text/javascript"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">src</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3&amp;mkt=en-us"&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">script</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">script</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">src</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="../../Scripts/jquery-1.6.2.min.js"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">type</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="text/javascript"&gt;&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">script</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">script</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">type</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">="text/javascript"&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">function</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> search() {</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> lat = $(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">'#latitude'</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">).val();</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> long = $(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">'#longitude'</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">).val();</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">$.ajax({</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">url: </span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"api/Attractions/?longitude="</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> + long + </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"&amp;latitude="</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> + lat,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">type: </span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"GET"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">success: </span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">function</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> (data) {</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">if</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> (data == </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">null</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">) {</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">$(</span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">'#attractionName'</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">).html(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"No attractions to search"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">else</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> {</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">$(</span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">'#attractionName'</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">).html(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"You should visit "</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> + data.Name);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">displayMap(data.Location.Geography.WellKnownText, data.Name);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">});</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp; </span>}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">function</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> displayMap(coordinateString, name) {</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #008000;" color="#008000">// WellKnownText is in format 'POINT (&lt;longitude&gt;, &lt;latitude&gt;)'</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">coordinateString = coordinateString.replace(</span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"POINT ("</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">, </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">""</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">).replace(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">")"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">, </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">""</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> long = coordinateString.substring(0, coordinateString.indexOf(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">" "</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">));</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> lat = coordinateString.substring(coordinateString.indexOf(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">" "</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">) + 1);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #008000;" color="#008000">// Show map centered on nearest attraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> map = </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> VEMap(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">'myMap'</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">map.LoadMap(</span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> VELatLong(lat, long), 15, VEMapStyle.Aerial);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #008000;" color="#008000">// Add a pin for the attraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">var</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> pin = </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> VEShape(VEShapeType.Pushpin, </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;"> VELatLong(lat, long));</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">pin.SetTitle(name);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">map.AddShape(pin);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 9.5pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">script</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;/</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">head</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">body</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">h1</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&gt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">Find the Closest Tourist Attraction</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">h1</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">div</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">label</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">for</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="longitude"&gt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">Longitude:</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">label</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">input</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">type</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="text"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">id</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="longitude"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">size</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="10"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">/&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">label</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">for</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="latitude"&gt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">Latitude:</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">label</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">input</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">type</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="text"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">id</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="latitude"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">size</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="10"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">/&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">input</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">type</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="button"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">value</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="Search"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">onclick</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">search();</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">/&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">div</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">p</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">id</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="attractionName"&gt;&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">p</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">&lt;</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">div</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">id</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">='myMap'</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">style</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">="</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">position</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">: </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">absolute</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">width</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">: </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">400px</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #ff0000;" color="#ff0000">height</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">: </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">400px</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">;</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">"&gt;&lt;/</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">div</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;/</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">body</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">&lt;/</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #800000;" color="#800000">html</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #0000ff;" color="#0000ff">&gt;</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p>The main functionality of this page is in the search function. When the user specifies the coordinates to search for, this function uses an HTTP PUT request to ask the service for the closest attraction. The displayMap function then uses Bing Maps to display the data visually.</p>
<p>If I run the project, I can test that the page appears correctly. However, we don&rsquo;t have any data to display yet:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3580.WebPageNoData_59114863.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3580.WebPageNoData_5F00_59114863.png" target="_blank"><img width="529" height="360" title="WebPageNoData" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="WebPageNoData" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1016.WebPageNoData_thumb_03E9AC76.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1016.WebPageNoData_5F00_thumb_5F00_03E9AC76.png" border="0" /></a></p>
<p>Now you may be wondering how it connected to the database when I didn&rsquo;t do anything to create one. Because my database didn&rsquo;t exist, Entity Framework Code First used a set of conventions to determine what the schema should look like, and created it for me. If I look at my LocalDb instance, I see the new database that it created:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7380.Database_388A08B1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7380.Database_5F00_388A08B1.png" target="_blank"><img width="370" height="376" title="Database" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="Database" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4478.Database_thumb_3F3D1234.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4478.Database_5F00_thumb_5F00_3F3D1234.png" border="0" /></a></p>
<p>Rest assured, if you don&rsquo;t like the default conventions there are plenty of options for changing table names, column names, data types and almost every other aspect of the schema that gets created. Code First can also be used to map to an existing database. That is beyond the scope of this post but you can check out the <a href="http://blogs.msdn.com/b/adonet/archive/2012/04/09/ef-power-tools-beta-2-available.aspx">EF Power Tools</a> as a good starting point.</p>
<h3>Seeding the Data</h3>
<p>Now I want to get some seed data into my database so that we can see the web page working properly. I&rsquo;m going to use Entity Framework Code First Migrations to do this. The Migrations feature allows me to evolve the database as my model changes (we&rsquo;ll see this in action shortly), and it also allows me to specify some seed data that should be present in the database.</p>
<p>To start using Code First Migrations, I can use the Enable-Migrations command in the Package Manager Console to switch on Migrations for my TourismContext. Package Manager Console can be opened from the Tools-&gt;Library Package Manager menu in Visual Studio.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0830.EnableMigrations_73DD6E6F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0830.EnableMigrations_5F00_73DD6E6F.png" target="_blank"><img width="745" height="192" title="EnableMigrations" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="EnableMigrations" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2818.EnableMigrations_thumb_1AAB84B0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2818.EnableMigrations_5F00_thumb_5F00_1AAB84B0.png" border="0" /></a></p>
<p>Enabling migrations has added a new Migrations folder to my project that contains two items:</p>
<p>&middot; Configuration.cs &ndash; This file allows me to define settings for how my database is to be migrated. This includes things such as the folder that migrations are generated in, seed data to be applied to the database and registration of providers for third party databases (i.e. MySql).</p>
<p>&middot; &lt;timestamp&gt;_InitialCreate.cs &ndash; This is a migration that represents the changes that I&rsquo;ve already applied to the database (i.e. creation of the TouristAttractions and Reviews tables). The migrations feature has recorded in my local database that this migration has already been applied.</p>
<p>I&rsquo;ll modify Configuration.cs to specify some seed data in the Seed method. You&rsquo;ll notice that I&rsquo;m using the AddOrUpdate method which allows me to specify a property to match on &ndash; in my case that is the Name of the TouristAttraction. If Migrations finds an existing TouristAttraction with that name, it will update its current values to match the ones I&rsquo;ve supplied; if not it will insert a new TouristAttraction.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">protected</span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">override</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">void</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Seed(TouristAttractions.Models.</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TourismContext</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> context)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">context.TouristAttractions.AddOrUpdate(a =&gt; a.Name,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">TouristAttraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">Name = </span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"Space Needle, Seattle"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">Location = </span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">DbGeography</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">.FromText(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"POINT(-122.348670959473 47.619930267334)"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">});</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">context.TouristAttractions.AddOrUpdate(a =&gt; a.Name,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">TouristAttraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">Name = </span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"Pike Place Market, Seattle"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">Location = </span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">DbGeography</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">.FromText(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"POINT(-122.341697692871 47.6094245910645)"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">});</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">context.TouristAttractions.AddOrUpdate(a =&gt; a.Name,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">new</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">TouristAttraction</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;"><span style="mso-spacerun: yes;">&nbsp; </span>{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">Name = </span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"Statue of Liberty, NY"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">,</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">Location = </span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">DbGeography</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">.FromText(</span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"POINT(-74.0439682006836 40.6886405944824)"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">)</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">});</span></span></span></p>
<h2 style="margin: 10pt 0in 0pt; line-height: 15pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; line-height: 12pt; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;"><span style="font-weight: bold;">}</span></span></span></span><span style="line-height: 12pt;"></span></h2>
<p>Now I can run the Update-Database command from Package Manager Console and the seed data will be applied to my local database. When I run the application, I can see this in action:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2806.WebPage_5A756B35.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2806.WebPage_5F00_5A756B35.png" target="_blank"><img width="529" height="767" title="WebPage" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="WebPage" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6204.WebPage_thumb_180559B0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6204.WebPage_5F00_thumb_5F00_180559B0.png" border="0" /></a></p>
<h3>Changing the Model</h3>
<p>I have a simple application up and running, but it&rsquo;s likely that my requirements will change over time. For example, I may decide I want to let users provide a Rating when they review an attraction.</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 9.5pt;">public</span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">class</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt; color: #2b91af;" color="#2b91af">Review</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">int</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> ReviewId { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">string</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Author { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">string</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> Comments { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="background-color: #ffff00;"><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"><span style="color: #0000ff;" color="#0000ff">int</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"> Rating { </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: yellow;"><span style="font-size: 9.5pt;">; }</span></span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">int</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span>TouristAttractionId<span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> { </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 9.5pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 9.5pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">TouristAttraction</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span>TouristAttraction<span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> { </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">get</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">; </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">set</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 9.5pt;">; }</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 9.5pt;">}</span></span></span></p>
<p>However when I update my model, it no longer matches the database schema that Code First created. If I were to run the application I would get an InvalidOperationException stating that &ldquo;The model backing the 'TourismContext' context has changed since the database was created. Consider using Code First Migrations to update the database&rdquo;.</p>
<p>I&rsquo;ve already enabled Migrations to work with seed data though, so I can run the &lsquo;Add-Migration AddRating&rsquo; command to scaffold my pending changes to a new migration, and give it a name (&lsquo;AddRating&rsquo;).</p>
<p>Running this command adds a new &lt;timestamp&gt;_AddRating.cs file to the Migrations folder. This file contains the steps to make my database schema match the current model:</p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff"><span style="font-size: 10pt;">namespace</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> TouristAttractions.Migrations</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">using</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> System;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">using</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> System.Data.Entity.Migrations;</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">partial</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">class</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #2b91af;" color="#2b91af">AddRating</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> : </span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt; color: #2b91af;" color="#2b91af">DbMigration</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">override</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">void</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> Up()</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">AddColumn(</span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"dbo.Reviews"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">, </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"Rating"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">, c =&gt; c.Int(nullable: </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">false</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">));</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">public</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">override</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"> </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #0000ff;" color="#0000ff">void</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;"> Down()</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">{</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="font-family: Consolas;" face="Consolas"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">DropColumn(</span></span><span style="font-size: 10pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"dbo.Reviews"</span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;">, </span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="color: #a31515;" color="#a31515">"Rating"</span></span></span><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-size: 10pt;">);</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="mso-spacerun: yes;"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt;">}</span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt; line-height: 13pt;"><span style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; line-height: 12pt; mso-highlight: white;"><span style="font-family: Consolas;" face="Consolas"><span style="font-size: 10pt;">}</span></span></span><span style="line-height: 12pt;"><span style="font-size: 10pt;"> </span></span></p>
<p>Because this is just scaffolded code, I could edit it. For example, I could create indexes, or add columns or tables that aren&rsquo;t part of my Code First model. I could also use the Sql method to execute any arbitrary SQL as part of the migration.</p>
<p>For this example the scaffolded code is fine, so I&rsquo;ll run the Update-Database command in Package Manager Console. This command will check that database to see which migrations have been applied, compare that to the migrations in my project and apply any pending ones. Now that the schema is updated, I can run my application again and everything works just fine.</p>
<h3>Conclusion</h3>
<p>I hope this post gave you some good insight into Entity Framework Code First and ASP.NET Web API. To learn about Entity Framework, I recommend visiting the <a href="http://msdn.com/data/ef">Entity Framework Developer Center</a> and the <a href="http://blogs.msdn.com/b/adonet/">Entity Framework Team Blog</a>. For Web API, please visit <a href="http://www.asp.net/web-api">http://www.asp.net/web-api</a>.</p>
<p>Enjoy!</p>
<p>&nbsp;</p>
<p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>https://twitter.com/jlzander</i></a><i>. </i></p>]]></content:encoded>
    </item>
    <item>
      <title>Introducing “Napa” - Office 365 Development Tools</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/introducing-napa-office-365-development-tools</link>
      <pubDate>Tue, 17 Jul 2012 06:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/07/17/introducing-napa-office-365-development-tools/</guid>
      <description><![CDATA[Yesterday was a very exciting day for Office and SharePoint! The team unveiled plans for the new...]]></description>
      <content:encoded><![CDATA[<p>Yesterday was a very exciting day for Office and SharePoint! The team unveiled plans for the new Office at a press conference, and released a public preview of Office and SharePoint 2013. You can find the <a href="http://www.microsoft.com/en-us/news/Press/2012/Jul12/07-16OfficePR.aspx">press release</a> available on the Microsoft News Center, and watch the video <a href="http://www.microsoft.com/en-us/news/presskits/office/liveevent.aspx">webcast</a> by CEO Steve Ballmer on-demand . You can also download the release at <a href="http://bit.ly/LiHiP4">office.com/preview</a>.</p>
<p>But the excitement doesn&rsquo;t stop there &ndash; if you&rsquo;re a developer you&rsquo;ll be very happy to hear about the new ways in which you&rsquo;ll be able to develop for Office and SharePoint.</p>
<p>Office and SharePoint 2013 feature a new Cloud App Model that embraces web standards, and allows you to build a new class of apps that combine web technologies and cloud services, right within Office and SharePoint. One of the primary investments for Office and SharePoint 2013 has been cloud enablement. Apps can be hosted in the cloud, which enables you to deploy, update and maintain your apps more quickly. You also have the ability to publish and sell your apps through a new Office Store, or distribute IT approved apps through an internal App Catalog within your organization. To learn more about the new Cloud App Model and Office Store, I recommend reading Ludovic Hauduc&rsquo;s announcement and watching the videos on the new <a href="http://blogs.msdn.com/b/officeapps/archive/2012/07/17/introducing-the-new-office-cloud-app-model.aspx">Apps for Office and SharePoint blog</a>.</p>
<h3>Introducing &ldquo;Napa&rdquo;</h3>
<p>In sync with yesterday&rsquo;s Office and SharePoint release, I&rsquo;m happy to share that we released a preview of a new toolset called &ldquo;Napa&rdquo;, which is the easiest way to start building apps for the new Cloud App Model. As we set out to create developer tools for the new Cloud App Model, we took a fresh look at the overall solution we wanted to give to our customers. We wanted to provide a lightweight, in-browser experience, so that you could quickly build your SharePoint or Office web app in the same browser where they would run. Therefore, we created a first-class development environment called &ldquo;Napa&rdquo;, as an online companion to Visual Studio.</p>
<p>&ldquo;Napa&rdquo; is a free app for SharePoint. Since &ldquo;Napa&rdquo; is web based, you don&rsquo;t need to install anything on your machine to start developing for Office and SharePoint. Just fire up your browser and start coding. As your application matures and you need more advanced tools, you can seamlessly switch to the more powerful, fully featured Visual Studio IDE, and continue developing there. To learn more about the latest advances in Visual Studio 2012 tooling for SharePoint, please visit <a href="http://msdn.microsoft.com/en-us/library/ee290856(v=VS.110).aspx">MSDN</a>.</p>
<p>Of course, in parallel with &ldquo;Napa&rdquo;, you can still continue using the existing extensibility models for Office and SharePoint, like VBA, COM, VSTO, and SharePoint solutions. (However, please note that these cannot be submitted to the new Office Store.)</p>
<h3>Getting Started</h3>
<p>Let&rsquo;s take a peek at what this all looks like. To give &ldquo;Napa&rdquo; a try, first sign up for the Microsoft Office 365 Developer Preview at <a href="http://dev.office.com">http://dev.office.com</a>.</p>
<p>When you sign up, a Developer site will be created for you. This site gives you your own instance of Office 365, where you can develop, deploy and test your Office 365 apps.</p>
<p>Next, you&rsquo;ll want to install &ldquo;Napa&rdquo; in order to add the tools to your Developer Site.</p>
<p>(Please visit <a href="http://msdn.microsoft.com/en-us/library/office/apps/fp179924(v=office.15)">MSDN</a> for the complete instructions on these &ldquo;Getting Started&rdquo; steps.)</p>
<h3>Creating a Project</h3>
<p>Next (with &ldquo;Napa&rdquo; installed on your Developer Site), click on &ldquo;Get tools to build apps&rdquo; to launch &ldquo;Napa&rdquo;.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7026.image_69C5CD23.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7026.image_5F00_69C5CD23.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0763.image_thumb_45343F9F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0763.image_5F00_thumb_5F00_45343F9F.png" width="734" height="378" /></a></p>
<p>&ldquo;Napa&rdquo; supports building all of the app types for Office and SharePoint allowing you to run in both the web app and rich client versions of the Office applications (i.e. Excel, Word).</p>
<p>Let&rsquo;s get started by building an app for SharePoint.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4370.image_327F45E8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4370.image_5F00_327F45E8.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2728.image_thumb_26E988A9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2728.image_5F00_thumb_5F00_26E988A9.png" width="729" height="476" /></a></p>
<p>Select &ldquo;App for SharePoint&rdquo; and click &ldquo;Create&rdquo; and you can start writing the code for your app right in the browser.</p>
<p>As a web developer, one of the first things you&rsquo;ll notice is that the new Cloud App Model is based on web standards. You&rsquo;ll spend your time coding in HTML, client-side ASPX, CSS and JavaScript.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4061.image_0D81856F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4061.image_5F00_0D81856F.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2728.image_thumb_5F96C367.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2728.image_5F00_thumb_5F00_5F96C367.png" width="734" height="482" /></a></p>
<p>Even though &ldquo;Napa&rdquo; is a browser based application (that works in all of the modern browsers), we wanted to ensure you had the rich editing experience you would want as a developer. Let&rsquo;s drill into a few key features of the editor you might not expect from a browser based developer tool.</p>
<h3>Reading and Writing Code</h3>
<p>We want you to be productive reading and writing code so we&rsquo;ve added syntax colorization, instance highlighting, indenting, bracket matching and completion as you type.</p>
<p>For example, as you scroll through the code, notice that as you click on an identifier, all of the instances are highlighted in the editor.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8203.clip_image007_7A62E973.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8203.clip_5F00_image007_5F00_7A62E973.png" target="_blank"><img title="clip_image007" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1258.clip_image007_thumb_5CF09867.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1258.clip_5F00_image007_5F00_thumb_5F00_5CF09867.png" width="602" height="372" /></a></p>
<p>Our simple, text based auto complete for JavaScript and CSS includes a rich set of code snippets (CTRL+SPACE). For example, we can use the for loop snippet:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7522.clip_image008_65E02AA6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7522.clip_5F00_image008_5F00_65E02AA6.png" target="_blank"><img title="clip_image008" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3005.clip_image008_thumb_337C5727.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3005.clip_5F00_image008_5F00_thumb_5F00_337C5727.png" width="496" height="174" /></a></p>
<p>After adding the for loop using the snippet, you can tab through the identifiers and change their names if desired.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5875.clip_image009_532B30EF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5875.clip_5F00_image009_5F00_532B30EF.png" target="_blank"><img title="clip_image009" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5468.clip_image009_thumb_4EB4B028.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5468.clip_5F00_image009_5F00_thumb_5F00_4EB4B028.png" width="482" height="120" /></a></p>
<p>We also make it easy to select common values such as true/false, literals and so on in JavaScript and CSS.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5556.clip_image010_5567B9AB.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5556.clip_5F00_image010_5F00_5567B9AB.png" target="_blank"><img title="clip_image010" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1830.clip_image010_thumb_2303E62C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1830.clip_5F00_image010_5F00_thumb_5F00_2303E62C.png" width="531" height="158" /></a></p>
<h3>Code Cleanup</h3>
<p>To help you tidy up your code and ensure correctness, we&rsquo;ve added the capability to see errors and warnings for JavaScript and CSS. Navigate between the errors by pressing (CTRL+,).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4786.clip_image011_5BAE9039.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4786.clip_5F00_image011_5F00_5BAE9039.png" target="_blank"><img title="clip_image011" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6445.clip_image011_thumb_3069F932.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6445.clip_5F00_image011_5F00_thumb_5F00_3069F932.png" width="275" height="81" /></a></p>
<p>And we have on demand formatting for JavaScript and CSS (CTRL+ALT+F) which allows you to select a block of code and tidy it up.</p>
<h3>Code Navigation</h3>
<p>To help you navigate your code, we&rsquo;ve added Find (CTRL+F), Find/Replace (CTRL+H) and the ability to see a quick outline of your code (CTRL+ALT+O), as pictured below.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5556.clip_image012_5018D2FA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5556.clip_5F00_image012_5F00_5018D2FA.png" target="_blank"><img title="clip_image012" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2248.clip_image012_thumb_448315BB.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2248.clip_5F00_image012_5F00_thumb_5F00_448315BB.png" width="660" height="416" /></a></p>
<p>For the full list of key bindings, hit (CTRL+.). This will bring up a page with a list of all of the keyboard shortcuts.</p>
<h3>App Properties</h3>
<p>&ldquo;Napa&rdquo; allows you to edit your app manifest and properties visually using a lightweight designer for the most common settings. Click on the &ldquo;Properties&rdquo; icon in the lower left corner to bring up the designer.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5468.image_66DAAB34.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5468.image_5F00_66DAAB34.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3312.image_thumb_42491DB0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3312.image_5F00_thumb_5F00_42491DB0.png" width="734" height="431" /></a></p>
<h3>Run</h3>
<p>As you looked through Default.aspx and app.js you&rsquo;ll have seen that the app is a simple page with the string &ldquo;initializing&hellip;.&rdquo; That gets changed to &ldquo;Hello &lt;username&gt;&rdquo; after a call to query SharePoint for the current user information succeeds showing that the app integrates back with SharePoint.</p>
<p>In the lower left corner, click the run button to run the app for SharePoint. This will package up the app, add it to your Developer Site and open it in the browser.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5554.image_08C60DB9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5554.image_5F00_08C60DB9.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8508.image_thumb_767D46F6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8508.image_5F00_thumb_5F00_767D46F6.png" width="734" height="206" /></a></p>
<p>In other words, without installing any software on the client machine, &ldquo;Napa&rdquo; allows you to create a project, edit the project and run it on SharePoint Online. Since the code is all client side, you can use your browser debugging tools to debug your code. (e.g. F12 in Internet Explorer)</p>
<p>We think this is a big leap forward in simplifying getting started as a developer. You no longer have to install software, notably SharePoint server, on your development machine in order to create your first app.</p>
<h3>Opening a Copy in Visual Studio 2012</h3>
<p>At some point, you will want to leverage the full power of the Microsoft Office Developer Tools for Visual Studio 2012. For example, one of the key new capabilities in the Cloud App Model is that apps can be hosted on SharePoint, Windows Azure Web Sites or your own web server. Visual Studio will enable you to modify projects started in &ldquo;Napa&rdquo; or create new apps from scratch so they can target all of the hosting options. You can also take advantage of the great web development features in Visual Studio 2012 such as the DOM explorer or JavaScript debugger.</p>
<p>To make the transition to Visual Studio seamless, &ldquo;Napa&rdquo; will not only allow you to download your project, but it will also help you install any software you need in order to develop apps for Office and SharePoint from Visual Studio.</p>
<p>Click on the &ldquo;Open in VS&rdquo; button in the lower left corner.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5468.clip_image017_7206C62F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5468.clip_5F00_image017_5F00_7206C62F.png" target="_blank"><img title="clip_image017" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image017" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2742.clip_image017_thumb_4ACC7CFA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2742.clip_5F00_image017_5F00_thumb_5F00_4ACC7CFA.png" width="252" height="84" /></a></p>
<p>The first time you use this feature, you will be asked for a language preference that Visual Studio will use if you add server code elements to your project.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5140.clip_image018_1868A97B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5140.clip_5F00_image018_5F00_1868A97B.png" target="_blank"><img title="clip_image018" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="clip_image018" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0184.clip_image018_thumb_38178343.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0184.clip_5F00_image018_5F00_thumb_5F00_38178343.png" width="455" height="339" /></a></p>
<p>When you click &ldquo;Continue&rdquo;, you&rsquo;ll be prompted to run an exe that will check that you have Visual Studio 2012, the Microsoft Office Developer Tools for Visual Studio 2012 - Preview add-in, and all of its dependencies. If you don&rsquo;t, it will launch the Microsoft Web Platform Installer to install the required software. It will then download and open the project in Visual Studio 2012.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5468.image_33A1027C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5468.image_5F00_33A1027C.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2742.image_thumb_1A38FF42.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2742.image_5F00_thumb_5F00_1A38FF42.png" width="734" height="77" /></a></p>
<p>What you&rsquo;ll notice is that when you run from Visual Studio, the project will already be set up to develop and debug remotely to your Developer Site.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5468.image_7CC6AE35.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5468.image_5F00_7CC6AE35.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5140.image_thumb_50A9B144.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5140.image_5F00_thumb_5F00_50A9B144.png" width="734" height="545" /></a></p>
<p>For those of you that know you want to start with Visual Studio, a direct download of the Microsoft Office Developer Tools for Visual Studio 2012 RC - Preview is available <a href="http://www.microsoft.com/web/handlers/WebPI.ashx?command=GetInstallerRedirect&amp;appid=OfficeToolsForVS2012RCPreview&amp;mode=new">here</a>.</p>
<h3>Apps for Office</h3>
<p>Now that we&rsquo;ve built an app for SharePoint, let&rsquo;s go back to &ldquo;Napa&rdquo; and build an app for Office. This time, when you create a new project, let&rsquo;s choose a Content app for Excel.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3731.image_00D38CB9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3731.image_5F00_00D38CB9.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1261.image_thumb_753DCF79.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1261.image_5F00_thumb_5F00_753DCF79.png" width="733" height="481" /></a></p>
<p>By default, an app for Office consists of HTML, CSS and JavaScript files reinforcing that the Office Cloud App Model is standard web development.</p>
<p>This time, when we run the app, we run it in the Excel Web App &ndash; no need to install the Microsoft Office 2013 Preview in order to build your first app for Office.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8524.image_5BD5CC3F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8524.image_5F00_5BD5CC3F.png" target="_blank"><img title="image" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3480.image_thumb_770E2540.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3480.image_5F00_thumb_5F00_770E2540.png" width="734" height="538" /></a></p>
<p>We do enable you to run in the Office client applications should you have them installed, that is an option in the Properties designer.</p>
<p>Finally, in addition to apps for SharePoint and apps for Excel, &ldquo;Napa&rdquo; also supports creating task pane and mail apps.</p>
<h3>Learn More</h3>
<p>We&rsquo;ve just scratched the surface of apps for Office and SharePoint in this post. I recommend visiting the new <a href="http://dev.office.com/">Apps for Office and SharePoint Developer Center</a>&nbsp;to learn more. And don&rsquo;t forget to <a href="http://msdn.microsoft.com/en-us/library/office/apps/fp179924(v=office.15)">sign up</a> for the Microsoft Office 365 Developer Preview to give &ldquo;Napa" a try!</p>
<p>&nbsp;</p>
<p>Follow me at <a href="https://twitter.com/jlzander"><i>https://twitter.com/jlzander</i></a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Live from TechEd Europe: LightSwitch HTML Client Preview and Visual Studio 2012 Tools for SharePoint</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/live-from-teched-europe-lightswitch-html-client-preview-and-visual-studio-2012-tools-for-sharepoint</link>
      <pubDate>Tue, 26 Jun 2012 00:40:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/06/26/live-from-teched-europe-lightswitch-html-client-preview-and-visual-studio-2012-tools-for-sharepoint/</guid>
      <description><![CDATA[This morning I presented the keynote at TechEd Europe 2012 in Amsterdam, and shared some updates on...]]></description>
      <content:encoded><![CDATA[<p>This morning I presented the keynote at <a href="http://europe.msteched.com/">TechEd Europe 2012</a> in Amsterdam, and shared some updates on our tools. If you’re not attending the event in person, you can still tune in online. The keynote video recording is available <a href="https://channel9.msdn.com/Events/TechEd/Europe/2012/KEY01">on-demand on Channel9</a>.</p>  <p>The first announcement you’re likely to hear about is our LightSwitch HTML Client Preview release...</p>  <h3>LightSwitch HTML Client Preview Availability</h3>  <p>At <a href="http://blogs.msdn.com/b/jasonz/archive/2012/06/11/teched-north-america-2012-keynote-recap.aspx">TechEd North America 2012</a>, I showed how LightSwitch is embracing a standards based approach with HTML5, JavaScript and CSS, so you can build companion touch-centric apps that run on multiple devices. This approach allows you to take advantage of the same backend services you’re using across your applications, as well as the productivity gains of LightSwitch.</p>  <p>We’re excited to announce that the LightSwitch HTML Client Preview is available today for <a href="http://go.microsoft.com/fwlink/?LinkID=207267" target="_blank">MSDN subscribers</a>, and will be available publicly on Thursday June 28<sup>th</sup>!&#160; To learn more about the release, provide feedback, or ask questions, please visit the LightSwitch <a href="http://msdn.microsoft.com/en-us/lightswitch/htmlclient">Developer Center</a>, <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/06/26/lightswitch-html-client-preview-available.aspx">team blog</a>, and <a href="http://social.msdn.microsoft.com/Forums/en-US/lightswitchhtml/threads">forums</a>.</p>  <h3>Visual Studio 2012 Tools for SharePoint 2010</h3>  <p>This morning I also demoed SharePoint tools. With Visual Studio 2012 RC, we’re delivering another compelling release for writing SharePoint 2010 solutions. We’ve developed a rich experience for creating SharePoint lists and content types, so that you no longer need to deal with the complex schema or error-prone hand-editing of XML. Our new SharePoint List Designer allows you to visually and accurately define new lists and content types:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5661.sptools_5391475E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5661.sptools_5F00_5391475E.png" target="_blank"><img title="sptools" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="sptools" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8461.sptools_thumb_1C78EC95.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8461.sptools_5F00_thumb_5F00_1C78EC95.png" width="704" height="450" /></a></p>  <p>We’re also working hard to make sure that you get the most accurate IntelliSense when working with SharePoint solutions.&#160; When developing a <a href="http://msdn.microsoft.com/en-us/library/ee361616(v=vs.110)">sandboxed solution</a>, we now filter to the APIs that are available in production, so that you get immediate feedback on the right APIs to use.&#160; We’ve also augmented IntelliSense to parse JavaScript files that are stored in the SharePoint content database, and now provide IntelliSense for the functions and members in those files.</p>  <p>Visual Studio 2012 RC includes several enhancements for Office 365 development, where SharePoint solutions run in a sandboxed process.&#160; For example, the Visual Web Part template has been updated to be compatible with the sandbox and can now be safely deployed to Office 365.&#160; We’ve also introduced a new Silverlight Web Part template, in case you prefer to define your Web Parts in XAML.&#160; Finally, we’ve improved the experience of deploying sandboxed solutions with a new Publish dialog, which allows you to directly publish to Office 365 or any other remote SharePoint Server.</p>  <p>ALM support for SharePoint development continues to improve in the Visual Studio 2012 RC.&#160; We’ve expanded our profiling support so that you can get rich information about the bottlenecks in both <a href="http://msdn.microsoft.com/en-us/library/ee361616(v=vs.110)">farm and sandboxed</a> solutions . I also <a href="http://blogs.msdn.com/b/jasonz/archive/2012/03/27/visual-studio-ultimate-roadmap.aspx">announced</a> previously that we’ll continue to add ALM support in the first Ultimate Feature Pack, which will feature unit testing support as well as support for SharePoint load testing.</p>  <h3>Conclusion</h3>  <p>I look forward to hearing from you as you have an opportunity to try out these features.</p>  <p>Enjoy the event, and make sure to check out the <a href="https://channel9.msdn.com/Events/TechEd/Europe/2012">view the videos online</a> as they become available!</p>  <p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>twitter.com/jlzander</i></a><i>.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>What you need to know about developing for Windows on ARM (WOA)</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/what-you-need-to-know-about-developing-for-windows-on-arm-woa</link>
      <pubDate>Tue, 12 Jun 2012 05:40:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/06/12/what-you-need-to-know-about-developing-for-windows-on-arm-woa/</guid>
      <description><![CDATA[You’ve probably heard about the new Windows on ARM PCs that will be coming to market with Windows 8....]]></description>
      <content:encoded><![CDATA[<p>You’ve probably heard about the new Windows on ARM PCs that will be coming to market with Windows 8. If you’ve been following the <a href="http://northamerica.msteched.com/">TechEd North America</a> coverage, then you’ve also seen these devices in the keynote. In this post, we’re going to cover what this all means for developers.</p>  <p>For an introduction to Windows on ARM, I recommend reading Steven Sinofsky’s post on the “Building Windows 8” blog: <a href="http://blogs.msdn.com/b/b8/archive/2012/02/09/building-windows-for-the-arm-processor-architecture.aspx">Building Windows for the ARM processor architecture</a>. As Steven mentions, ARM testing devices are currently available to a small partner program. However all developers can start preparing their Metro style apps for ARM PCs today. </p>  <p>In this blog post, I’ll walk you through developing an application to run on an ARM PC. What you’ll find is that developing an app for Windows on ARM is the same as developing a Metro style app for x86/64 PCs; that is, the same Metro style app will run on either hardware. Also, many Visual Studio paradigms you’ve come to know from building other application types (designing, testing, debugging, etc.) will carry over to your experience of building Metro style apps. In addition to the walkthrough below, I’ve also recorded <a href="https://channel9.msdn.com/posts/Developing-For-Windows-on-ARM" target="_blank">a video</a> so you can see this in action:</p> <iframe style="height: 288px; width: 512px" src="https://channel9.msdn.com/posts/Developing-For-Windows-on-ARM/player?w=512&amp;h=288" frameborder="0" scrolling="no"></iframe>  <p>As Windows hardware has evolved over the years, we’ve been updating Visual Studio to help you build applications that target each version. For example, today you can use Visual Studio to build apps that run on x86 and x64 PCs. You can also use Visual Studio to build apps that run on ARM hardware, including Windows Phone and Windows Embedded Compact. With Windows 8, you will now be able to build apps that target Windows on ARM. (To clarify, Visual Studio itself will not run on ARM, but it will enable you to build apps that run on ARM devices.) For those interested, I’ve provided details on the engineering process at the end of this post, including some history on how we were able to leverage our experience with other chips in the past. </p>  <h2>Walkthrough</h2>  <p>Let’s see what it looks like to build one of these apps in Visual Studio 2012. Regardless of whether you’re using JavaScript, C++, Visual Basic, or C#, if you’ve built a Metro style app that targets x86/x64 then you already know how to build one that targets ARM. You use the same Metro style project templates, which provide the starting point for building an app.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0385.image5_15E5E9CD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0385.image5_5F00_15E5E9CD.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4572.image5_thumb_65526C14.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4572.image5_5F00_thumb_5F00_65526C14.png" width="704" height="488" /></a></p>  <p>In this case, we’re going to start with the Windows Blog Reader app, and walk through the process of debugging, testing, and deploying it on an ARM device. You can find tutorials to create this app in <a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh974582.aspx">JavaScript</a>, <a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/br211380.aspx">C#/VB</a>, or <a href="http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh465045.aspx">C++</a>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2021.TutorialImage_5BF93791.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2021.TutorialImage_5F00_5BF93791.png" target="_blank"><img title="TutorialImage" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="TutorialImage" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5810.TutorialImage_thumb_59530C91.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5810.TutorialImage_5F00_thumb_5F00_59530C91.png" width="700" height="522" /></a></p>  <h3>Remote Debugging</h3>  <p>Visual Studio provides the ability to do remote debugging. You’ll need to use this feature when working with an ARM device, since Visual Studio will always be running on an x86/x64 machine. Before you can start remote debugging, you’ll need to install the <a href="http://www.microsoft.com/visualstudio/11/en-us/downloads#remote-tools">Remote Tools for Visual Studio 2012 RC</a> onto your ARM device. The first thing we’ll do is launch the Remote Debugger from the device’s Start screen. You may receive a prompt to automatically configure your firewall settings (click Configure to continue).</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2086.RemoteDebugger_46A0A38B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2086.RemoteDebugger_5F00_46A0A38B.png" target="_blank"><img title="RemoteDebugger" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="RemoteDebugger" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3247.RemoteDebugger_thumb_61D8FC8C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3247.RemoteDebugger_5F00_thumb_5F00_61D8FC8C.png" width="638" height="130" /></a></p>  <p>Next from the toolbar we select “Remote Machine”.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8424.DebugMenu_75F21915.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8424.DebugMenu_5F00_75F21915.png" target="_blank"><img title="DebugMenu" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="DebugMenu" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3225.DebugMenu_thumb_1849AE8F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3225.DebugMenu_5F00_thumb_5F00_1849AE8F.png" width="190" height="145" /></a></p>  <p>(Note: If you’re using C++, you’ll also need to click the Debug dropdown and select Configuration Manager, and then set Platform to “ARM.”) Visual Studio 2012 will bring up the Remote Debugger Connections dialog. If the device is on the same subnet, then the device will appear under “My Subnet” (or if you are doing it through the project properties window, click the “Find…” button on the Debug tab). Alternatively you can manually configure it by entering the device’s machine name or IP address. Select your machine and then enter your login credentials for the machine if prompted (this will depend on the authentication mode you selected).</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4885.image_33BD919C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4885.image_5F00_33BD919C.png" target="_blank"><img title="image" style="background-image: none; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1346.image_thumb_5A8BA7DC.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1346.image_5F00_thumb_5F00_5A8BA7DC.png" width="409" height="513" /></a></p>  <p>Next you’ll see a prompt on your ARM device to acquire a <a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh696646(v=vs.110).aspx">developer license</a>:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0763.image_5D34638D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0763.image_5F00_5D34638D.png" target="_blank"><img title="image" style="background-image: none; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2248.image_thumb_4AEB9CCB.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2248.image_5F00_thumb_5F00_4AEB9CCB.png" width="411" height="300" /></a></p>  <p>Visual Studio will package and deploy your app and then launch it on the ARM device. Making all this happen requires a fair bit of work in MSBuild, the compilers, and the package wizard, but this all happens transparently and allows you to just focus on building your app.</p>  <p>At this point you actually have a remote debugger attached! Let’s set a breakpoint so we can actually see the debugger in action. To do this, press Shift+F5 to stop debugging, and open the DateConverter.cs file. Set a breakpoint on the first line of the Convert method, and press F5 again. (For JavaScript set the breakpoint in the getBlogPosts function in the data.js file, and for C++ set it in the Convert method in DateConverter.h).</p>  <p>You’ll see that execution actually stops at the breakpoint, and you have the full debugger capabilities available (i.e. Stepping, Breakpoints, Locals, Watches, Call Stack, Immediate Window, etc.). In particular notice the Registers window, which is supported for ARM and helps you see how things are running on the device. You can now press F11 to continue to step through the method, and then Shift+F5 to stop debugging.</p>  <p>C#:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0576.CSharpStoppedInDebugger_57A7621F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0576.CSharpStoppedInDebugger_5F00_57A7621F.png" target="_blank"><img title="CSharpStoppedInDebugger" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="CSharpStoppedInDebugger" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2625.CSharpStoppedInDebugger_thumb_09356066.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2625.CSharpStoppedInDebugger_5F00_thumb_5F00_09356066.png" width="704" height="427" /></a></p>  <p>C++:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5140.image40_58384069.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5140.image40_5F00_58384069.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0763.image40_thumb_2CAEB273.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0763.image40_5F00_thumb_5F00_2CAEB273.png" width="704" height="427" /></a></p>  <p>JavaScript:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/5100.image45_631F6475.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/5100.image45_5F00_631F6475.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3022.image45_thumb_1D3352B7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3022.image45_5F00_thumb_5F00_1D3352B7.png" width="704" height="427" /></a></p>  <h3>Unit Testing</h3>  <p>Let’s look at how we would add unit tests for our app, and execute them on the ARM device. Right-click the solution and click “Add-&gt;New Project”, and select the “Unit Test Library (Metro style apps)” template. Name the project “BlogReaderUnitTestLibrary” and click Ok.</p>  <p>Right-click References and select “Add Reference…”, then click “Solution” and select “WindowsBlogReader”. Update UnitTest1.cs with the following code:</p>  <div id="codeSnippetWrapper">   <pre id="codeSnippet" style="overflow: visible; font-size: 8pt; font-family: &quot;Courier New&quot;, courier, monospace; color: black; padding-bottom: 0px; direction: ltr; text-align: left; padding-top: 0px; padding-left: 0px; margin: 0em; line-height: 12pt; padding-right: 0px; width: 100%; background-color: rgb(244,244,244)">[TestClass]<br /><span style="color: rgb(0,0,255)">public</span> <span style="color: rgb(0,0,255)">class</span> UnitTest1<br />{<br />    <br />    [TestMethod]<br />    <span style="color: rgb(0,0,255)">public</span> <span style="color: rgb(0,0,255)">void</span> ValidateConvertForYearWithValidInput()<br />    {<br />        var converterInstance = <span style="color: rgb(0,0,255)">new</span> DateConverter();<br /><br />        <span style="color: rgb(0,128,0)">//checks if Convert method returns the year properly.</span><br />        DateTime currentTime = DateTime.Now;<br />        <span style="color: rgb(0,0,255)">string</span> actualYear = <br />            (<span style="color: rgb(0,0,255)">string</span>)converterInstance.Convert((<span style="color: rgb(0,0,255)">object</span>)currentTime, <br />                                              <span style="color: rgb(0,0,255)">typeof</span>(<span style="color: rgb(0,0,255)">string</span>), <span style="color: rgb(0,96,128)">&quot;year&quot;</span>, <span style="color: rgb(0,96,128)">&quot;Invariant&quot;</span>);<br />        <span style="color: rgb(0,0,255)">string</span> expectedYear = DateTime.Now.Year.ToString();<br />        Assert.AreEqual(expectedYear, actualYear, <br />        <span style="color: rgb(0,96,128)">&quot;The expected year to be returned by the Convert method and the actual returned value are not equal&quot;</span>);<br />    }<br /><br />    [TestMethod]<br />    <span style="color: rgb(0,0,255)">public</span> <span style="color: rgb(0,0,255)">void</span> ValidateConvertWithInvalidInput()<br />    {<br />        var converterInstance = <span style="color: rgb(0,0,255)">new</span> DateConverter();<br /><br />        <span style="color: rgb(0,128,0)">//checks if Convert method throws exception when invoked with a string input.</span><br />        <span style="color: rgb(0,0,255)">string</span> currentTimeSTring = DateTime.Now.ToString();<br /><br />        Assert.ThrowsException&lt;ArgumentException&gt;(() =&gt; <br />            (<span style="color: rgb(0,0,255)">string</span>)converterInstance.Convert((<span style="color: rgb(0,0,255)">object</span>)currentTimeSTring, <br />                                              <span style="color: rgb(0,0,255)">typeof</span>(<span style="color: rgb(0,0,255)">string</span>), <br />                                              <span style="color: rgb(0,96,128)">&quot;year&quot;</span>, <br />                                              <span style="color: rgb(0,96,128)">&quot;Invariant&quot;</span>),<br />            <span style="color: rgb(0,96,128)">&quot;Invoking Convert with a non-DateTime type doesn't throw&quot;</span>);<br />    }<br />}<br /></pre>

  <br /></div>


<p class="MsoNormal" style="list-style-type: disc; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none">Similarly, C++ has a Unit Test Library template for Metro style apps. One key difference to be aware of is C++ unit tests work against a WinMD file and not against an EXE project, so in the case of this walkthrough DateConverter.h would need to be moved to a separate library project and compiled as a WinMD. The Windows Dev Center has more information on how to <a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh441482(v=vs.110).aspx">unit test Metro style apps</a>.</p>

<p>We can use the new Test Explorer to launch our tests by clicking Test-&gt;Windows-&gt;Test Explorer. (Note this will run the tests on your Visual Studio machine, not on the ARM device.)</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8836.TestExplorer_2AF48B94.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8836.TestExplorer_5F00_2AF48B94.png" target="_blank"><img title="TestExplorer" style="background-image: none; display: inline" border="0" alt="TestExplorer" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1586.TestExplorer_thumb_03BA425F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1586.TestExplorer_5F00_thumb_5F00_03BA425F.png" width="300" height="350" /></a></p>

<p>The <a href="http://www.microsoft.com/visualstudio/11/en-us/downloads#remote-tools">Remote Tools for Visual Studio 2012 RC</a> that we installed earlier include a command-line unit test runner (vstest.console.exe) that we can use to execute our tests on the ARM device. It supports .trx files for offline viewing and sharing of results. (Note that JavaScript Unit Testing is not supported on ARM.) Start by creating an AppX package from your test project (right-click project, click on Store-&gt;Create AppX package). Follow the prompts and select “ARM” as the type of package you want to build. Now copy the AppX package to the device (a USB stick can help here). From a command prompt, change to this directory:</p>

<p>%ProgramFiles%\Microsoft Visual Studio\11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow</p>

<p>Run this command to install the certificate for the AppX:</p>

<p>certutil –addstore root BlogReaderUnitTestLibrary_1.0.0.0_ARM_Debug.cer</p>

<p>Now type the following command:</p>

<p>vstest.console.exe BlogReaderUnitTestLibrary_1.0.0.0_ARM_Debug.appx /logger:trx</p>

<p>The /logger:trx switch creates a trx file which can be used for detailed analysis of the results.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7658.image55_6C33A209.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7658.image55_5F00_6C33A209.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3326.image55_thumb_5C276403.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3326.image55_5F00_thumb_5F00_5C276403.png" width="673" height="347" /></a></p>

<h3>Manual Testing</h3>

<p>You can execute manual testing scenarios on your ARM device with the help of Microsoft Test Manager. To do this, you run Microsoft Test Manager on your x86/x64 machine and connect to your remote device. As you test, the bugs that you log have all the diagnostic information collected from the attached ARM device. You can also take screenshots of the device directly from your host machine and auto-create bugs in Team Foundation Server.</p>

<p>Let’s see this in action. Launch the Microsoft Test Tools Adapter service on your device, which is responsible for collecting diagnostic information:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7612.TestToolsAdapter_66E74C09.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7612.TestToolsAdapter_5F00_66E74C09.png" target="_blank"><img title="TestToolsAdapter" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="TestToolsAdapter" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8360.TestToolsAdapter_thumb_2ABE1112.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8360.TestToolsAdapter_5F00_thumb_5F00_2ABE1112.png" width="446" height="338" /></a></p>

<p>Click ‘Start Service’:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8372.TestToolsAdapter2_6FC08CDE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8372.TestToolsAdapter2_5F00_6FC08CDE.png" target="_blank"><img title="TestToolsAdapter2" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="TestToolsAdapter2" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1425.TestToolsAdapter2_thumb_58951260.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1425.TestToolsAdapter2_5F00_thumb_5F00_58951260.png" width="470" height="197" /></a></p>

<p>From your host machine, launch Microsoft Test Manager and go to your &quot;Test&quot; center (assuming we have already created test plans and test cases already):</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3225.image66_1328F450.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3225.image66_5F00_1328F450.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6518.image66_thumb_111A9806.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6518.image66_5F00_thumb_5F00_111A9806.png" width="702" height="135" /></a></p>

<p>Click the &quot;Modify&quot; link:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8816.image_65A25920.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8816.image_5F00_65A25920.png" target="_blank"><img title="image" style="background-image: none; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3618.image_thumb_3A5DC219.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3618.image_5F00_thumb_5F00_3A5DC219.png" width="376" height="48" /></a></p>

<p>Finally, enter the name of the remote device that would like to connect to:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6014.ManualTestingRemoteDevice_60F34D42.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6014.ManualTestingRemoteDevice_5F00_60F34D42.png" target="_blank"><img title="ManualTestingRemoteDevice" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ManualTestingRemoteDevice" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2476.ManualTestingRemoteDevice_thumb_7C2BA643.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2476.ManualTestingRemoteDevice_5F00_thumb_5F00_7C2BA643.png" width="502" height="208" /></a></p>

<p>You can also chose to install your WindowsBlogReader app in to the remote device right from the testing center using the &quot;Install Windows metro style App&quot; link. Click &quot;Run&quot; in the toolbar to start the manual testing session. You’ll see a popup message on your device indicating that the manual testing session has started.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2705.RecordingStarted_507ADC47.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2705.RecordingStarted_5F00_507ADC47.png"><img title="RecordingStarted" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="RecordingStarted" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4034.RecordingStarted_thumb_04AF058E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4034.RecordingStarted_5F00_thumb_5F00_04AF058E.png" width="386" height="92" /></a></p>

<p>Now you can execute the individual test cases, mark them as pass or fail, and log bugs with rich diagnostic info captured directly from the device.</p>

<h3>Remote Profiling</h3>

<p>Due to their power and size goals, WOA and SoC devices have different CPU, memory and I/O subsystem characteristics than a typical development machine. Performance testing will help guide any tuning that is needed for you to build best-in-class apps for your users to use, on any device. </p>

<p>Let’s look at how we can setup remote profiling to analyze the app’s performance. Click Debug-&gt;Start Performance Analysis. You’ll see a note to check the remote machine for UAC prompts (for a program named VSPerf.exe). Accept the elevation prompt on the ARM device, and the application will deploy and run on the remote device with profiling.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3113.image_713AA710.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3113.image_5F00_713AA710.png" target="_blank"><img title="image" style="background-image: none; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6740.image_thumb_1808BD51.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6740.image_5F00_thumb_5F00_1808BD51.png" width="554" height="416" /></a></p>

<p>The profiler’s now attached, and you can execute your scenario:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7411.image_3ED6D391.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7411.image_5F00_3ED6D391.png" target="_blank"><img title="image" style="background-image: none; display: inline" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8081.image_thumb_09CA4461.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8081.image_5F00_thumb_5F00_09CA4461.png" width="356" height="153" /></a></p>

<p>Once you’re done working with the app, click Stop profiling. The report will then be copied back to your development machine and opened in Visual Studio.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/7183.ProfilerSummary_6DEFBE04.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/7183.ProfilerSummary_5F00_6DEFBE04.png" target="_blank"><img title="ProfilerSummary" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ProfilerSummary" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4760.ProfilerSummary_thumb_2891F9DF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4760.ProfilerSummary_5F00_thumb_5F00_2891F9DF.png" width="704" height="427" /></a></p>

<p>There are all sorts of ways you can investigate the results – you can zoom on the graph to see results for a particular range of time, you can use the summary page to get a quick view of what was the most expensive parts of the selected time range, and you can drill down on call tree branches and their cost. Here is the Call Tree view:</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2273.ProfilerCallTree_04914AA5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2273.ProfilerCallTree_5F00_04914AA5.png" target="_blank"><img title="ProfilerCallTree" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ProfilerCallTree" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6864.ProfilerCallTree_thumb_20C6B4E5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6864.ProfilerCallTree_5F00_thumb_5F00_20C6B4E5.png" width="704" height="211" /></a></p>

<p>The Function Details View lets you see a visual representation of the cost of the methods that call the method you are interested in, the breakdown of the methods it calls, and the cost of each line of code executing in the method itself.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0083.ProfilerFunctionDetails_7D994A32.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0083.ProfilerFunctionDetails_5F00_7D994A32.png" target="_blank"><img title="ProfilerFunctionDetails" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ProfilerFunctionDetails" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1541.ProfilerFunctionDetails_thumb_4A5FA17A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1541.ProfilerFunctionDetails_5F00_thumb_5F00_4A5FA17A.png" width="704" height="428" /></a></p>

<p>It’s also worth noting that remote profiling supports pause and resume functionality just like local profiling does.</p>

<h3>Packaging Your App</h3>

<p>When it comes time to upload your app to the store, you can build a “Neutral” package if you only have managed code in your app (C#, VB, JavaScript). This indicates that the package contains code that will run on either x86, x64 or ARM. To create the package, right-click the project and select Store-&gt;Create App Package.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2112.image111_551F8980.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2112.image111_5F00_551F8980.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0121.image111_thumb_604BA47B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0121.image111_5F00_thumb_5F00_604BA47B.png" width="704" height="543" /></a></p>

<p>If you have a mix of both native and managed code, you’ll want to build packages for each of the architectures that you support, including ARM.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4857.image120_76A149C0.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4857.image120_5F00_76A149C0.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2337.image120_thumb_38A7B902.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2337.image120_5F00_thumb_5F00_38A7B902.png" width="704" height="544" /></a></p>

<p>Prior to uploading, it’s a good idea to run the Windows App Certification Kit (WinACK) on the actual ARM device, to verify everything works as expected in the target environment. In Visual Studio 2012 RC, we’ve made this easier by providing a single MSI that includes everything you need for installing it on the ARM device. You can get this MSI by downloading the <a href="http://msdn.microsoft.com/en-us/windows/hardware/hh852363">Windows Software Development Kit (SDK) for Windows 8 Release Preview</a>. After installing this SDK, you’ll see a file called “Windows App Certification Kit arm-arm_en-us.msi” under C:\Users\&lt;user&gt;\Downloads\Windows Kits\8.0\StandaloneSDK\Installers. Just copy that file to your ARM device and run it from there.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3718.image126_0BB77789.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3718.image126_5F00_0BB77789.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1234.image126_thumb_765C52D1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1234.image126_5F00_thumb_5F00_765C52D1.png" width="604" height="424" /></a><i></i></p>

<h2>Behind the Scenes: Engineering for ARM</h2>

<h3>Designing for ARM</h3>

<p>Within the engineering team, we established some design principles for targeting multiple chip architectures. For one, we wanted to abstract most chip differences from developers, with the goal that you can write apps that run on multiple chips without needing to do anything special. Second, we wanted to limit the places within the product that deeply know about chip architectures, with the goal that porting our product to new chip architectures is narrowly defined and straightforward. This enables our team to add new features and scenarios efficiently in the future.</p>

<p>The process of engineering for ARM was different for each language (JavaScript, C++, and C#/VB), based on existing implementation details of the various runtimes and compilers.</p>

<p>JavaScript uses a JIT compiler, so platform targeting is taken care of at runtime. Therefore Metro style apps using JavaScript are platform neutral, and you can write once to run on x86/x64/ARM. </p>

<p>C# and Visual Basic are also abstracted from hardware differences. They compile to MSIL, which is platform neutral. Therefore, Metro style apps using C# or Visual Basic can be compiled once to run on x86/x64/ARM.</p>

<p>C++ is close to the metal, and compiled to the machine language for the platform that you’re targeting. This offers developers full control, but also requires that they specify the hardware where the app will be supported.</p>

<p>Taking these differences into account, we were able to create designs that worked well for each respective language platform.</p>

<h3>Engineering Process</h3>

<p>The story about how we engineered for ARM begins one decade ago, when we ported the .NET Framework to 64-bit. While we always intended to support multiple chip architectures, this real-world experience was very useful. It motivated design changes that stayed with the product, and that made supporting ARM easier. We also have a lot of experience in the Developer Division writing compilers and runtimes for the ARM architecture itself, through our work with Windows Phone and Windows Embedded. The .NET Compact Framework first shipped 10 years ago and we’ve supplied C++ compilers to build the Windows Embedded Compact operating system since the mid-1990s. Our focus in the phone and embedded space has always been to make code run efficiently on small systems. However, today’s smartphones of today are more powerful computers than desktop computers of a decade ago! A group in Microsoft Research did an experiment running the main desktop .NET Framework on a smartphone, and found that it performs well. Their experience made us confident that our work to port the desktop .NET Framework to ARM would be successful. </p>

<p>As a result of our existing product designs, we were able to support the ARM chip in a relatively straight-forward way. There was no need to make architectural-level changes to accommodate ARM. That said there was still substantial work to do. </p>

<p>For example, we found assumptions in a few source files, where a 32-bit process was assumed to exclusively mean an x86 environment, but it could now also mean ARM. We also experienced the advanced scenarios mentioned in the section above, firsthand. </p>

<p>The biggest challenge was working with pre-release hardware, particularly early in the release. At first, we had to telnet into Windows to get anything done, since we were working with a Windows build without the Windows shell. We soon got a Windows PE build and hardware with video-out, USB and Ethernet. At that point, we could use Windows more like you would expect.</p>

<p>You can see a picture below, of some of the hardware that we used while building Windows 8.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/3835.image135_05FEEE94.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/3835.image135_5F00_05FEEE94.png" target="_blank"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/4643.image135_thumb_78BD86E2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/4643.image135_5F00_thumb_5F00_78BD86E2.png" width="628" height="307" /></a></p>

<p>A really exciting aspect of targeting a new platform is that everything is changing at once. The tool stack is one additional piece of movement. It takes a lot of coordinated teamwork to build systems as large and important as Windows 8 and the platform for Metro style apps, and this release couldn’t have happened without the great partnership between the Developer Division and Windows. </p>

<h2>Conclusion</h2>

<p>In this post, we walked through the process of developing a Metro style app to run on Windows on ARM. We saw that there are very few differences to make your Metro style apps target ARM. We covered a few specific tips that you need to know, such as how to do remote debugging and profiling on the device. Finally, we ended with an inside story on how the team went about enabling it all. I hope that this post helps answers some questions that you might have had, and also helps prepare you for developing apps that target Windows on ARM. </p>

<p>Enjoy!</p>

<p>&#160;</p>

<p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>twitter.com/jlzander</i></a><i>.</i></p>]]></content:encoded>
    </item>
    <item>
      <title>TechEd North America 2012 Keynote News</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/teched-north-america-2012-keynote-news</link>
      <pubDate>Mon, 11 Jun 2012 07:53:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/06/11/teched-north-america-2012-keynote-news/</guid>
      <description><![CDATA[We’re here in Orlando this week at TechEd North America 2012, with thousands of developers and IT...]]></description>
      <content:encoded><![CDATA[<p>We’re here in Orlando this week at <a href="http://northamerica.msteched.com/">TechEd North America 2012</a>, with thousands of developers and IT professionals. If you’re not attending the event in person, you can still tune into the live stream at <a href="http://northamerica.msteched.com/">http://northamerica.msteched.com/</a>. This morning I presented in the Day One keynote. In this blog post, I’ll walk through some of the key announcements and demos I covered.</p>  <p><strong>[UPDATE 6/13/12: You can now find a video recording of the Day One keynote available on </strong><a href="https://channel9.msdn.com/Events/TechEd/NorthAmerica/2012/KEY01" target="_blank"><strong>Channel9</strong></a><strong>.]</strong></p>  <h3>Windows 8 ARM Development</h3>  <p>Visual Studio 2012 includes support for building Windows 8 Metro style apps. Along with the Windows 8 release, there will be some exciting new hardware based on the ARM processor. Today, I showed what it looks like to develop an app for one of these devices. For example, below is a screenshot from the debugger where you can see the Registers Windows and Disassembly code for an app running on ARM.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2630.DebuggingArm_4ED4A39C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2630.DebuggingArm_5F00_4ED4A39C.png" target="_blank"><img title="DebuggingArm" style="background-image: none; display: inline" border="0" alt="DebuggingArm" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2211.DebuggingArm_thumb_7C55C35F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2211.DebuggingArm_5F00_thumb_5F00_7C55C35F.png" width="704" height="506" /></a></p>  <p>Stay tuned for another blog post tomorrow, where I’ll dive into all the details you need to know about developing for Windows on ARM.</p>  <h3>LightSwitch OData Support and SAP</h3>  <p>There are a number of other <a href="http://msdn.microsoft.com/en-us/lightswitch/hh852657">LightSwitch features to be aware of in the Visual Studio 2012 RC</a>, such as the new Cosmopolitan theme and <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/06/07/publishing-lightswitch-apps-to-azure-with-visual-studio-2012.aspx">Azure deployment with the latest Azure release</a>. One feature that I’m personally very excited about is the OData support. Last month, in conjunction with SAP, IBM, Citrix, Progress, and WSO2, we submitted OData to the OASIS standards org. OData is a key building block for cloud services. Using LightSwitch in Visual Studio 2012, you can both consume and produce OData feeds. There are many OData providers available that you use with LightSwitch. Today we showed an interesting example of using LightSwitch to consume an OData feed from SAP NetWeaver Gateway, which allows you to programmatically access SAP data and business processes. Below you can see a screenshot of defining a relationship between Customer data from SQL Server and Sales Order information from SAP using the LightSwitch designer. I think this will be a really useful feature for your line of business apps, and I encourage you to try it out.</p>  <h4><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0045.SAP-ScreenShot1_4DA2F229.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0045.SAP_2D00_ScreenShot1_5F00_4DA2F229.png" target="_blank"><img title="SAP ScreenShot1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="SAP ScreenShot1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0880.SAP-ScreenShot1_thumb_3EA8FB4D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0880.SAP_2D00_ScreenShot1_5F00_thumb_5F00_3EA8FB4D.png" width="704" height="471" /></a></h4>  <h3>LightSwitch HTML5 Support</h3>  <p>We are working hard to help you build great rich client experiences. At the same time, we understand that many of you are being asked to create applications that can be run on multiple devices. We want you to be able to take advantage of the same backend services in these applications, as well as the productivity gains obtained with LightSwitch. The best way to create companion applications that can run on multiple heterogeneous devices (such as a phones and slates) is to leverage a standards based approach like HTML5, JavaScript and CSS. Today we’re announcing HTML5/JavaScript client development support within LightSwitch to address these scenarios. LightSwitch continues to be the simplest way to create modern line of business applications for the enterprise. This support will be made available in a preview release, coming soon. Stay tuned to the <a href="http://msdn.microsoft.com/en-us/lightswitch/jj129570">Developer Center</a> for updates. For more information on today’s announcements, please visit the <a href="http://blogs.msdn.com/b/lightswitch/archive/2012/06/11/announcing-the-lightswitch-html-client.aspx">LightSwitch team blog</a>.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1157.HTMLapp_2E4FF49B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1157.HTMLapp_5F00_2E4FF49B.png" target="_blank"><img title="HTMLapp" style="background-image: none; display: inline" border="0" alt="HTMLapp" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6036.HTMLapp_thumb_56EE60A2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6036.HTMLapp_5F00_thumb_5F00_56EE60A2.png" width="704" height="494" /></a></p>  <h3>Team Foundation Service Public Preview</h3>  <p>Today we announced that we’re removing the requirement for an invitation code to the Team Foundation Service. This means anyone can sign up to use the service with no friction. We’ve also introduced a new landing page so that you have a great welcome experience, as well as additional resources. Please visit <a href="http://blogs.msdn.com/b/bharry/archive/2012/06/11/team-foundation-service-preview-is-public.aspx">Brian Harry’s blog</a> for a complete overview of the <a href="http://www.tfspreview.com/">Team Foundation Service</a> updates we released today.</p>  <p><a href="http://www.tfspreview.com/" target="_blank"><img title="TFS-homepage" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="TFS-homepage" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/6574.TFS-homepage_0B6F5295.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/6574.TFS_2D00_homepage_5F00_0B6F5295.png" width="704" height="596" /></a></p>  <h3>Global Service Monitoring coming in System Center 2012 SP1</h3>  <p>Each release of our ALM tools, we’ve integrated additional roles to improve collaboration across the team, and decrease cycle time. This release (Visual Studio 2012), we’re including operations, which is increasingly important for today’s cloud-based services apps.</p>  <p>Many of you are already using System Center to monitor your applications in production. Today we’re announcing a new capability under the codename “Global Service Monitor”, which will be enabled with System Center 2012 SP1. Global Service Monitor (GSM) allows you to monitor your application’s functionality, performance, and uptime from multiple endpoints around the world.</p>  <p>Today I demonstrated how you can import your web tests created in Visual Studio, and schedule them to run against the production application. Operations can easily assign production issues to engineering, so that the data flows and both roles get the info they need. The engineer can also open those issues right in TFS, and review actionable data like IntelliTrace stack traces with method-level parameters:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/8637.iTrace-Debug-1_316A244D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/8637.iTrace_2D00_Debug_2D00_1_5F00_316A244D.png" target="_blank"><img title="iTrace Debug 1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="iTrace Debug 1" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/0714.iTrace-Debug-1_thumb_335F2569.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/0714.iTrace_2D00_Debug_2D00_1_5F00_thumb_5F00_335F2569.png" width="704" height="398" /></a></p>  <p>Both operations and engineering get to work in tools they’re familiar with, and have easy access to the information that they need. Gone are the days of phone tag, and hours of iterations just trying to understand what the other team is seeing.</p>  <h3>Conclusion</h3>  <p>There’s lots of exciting news and announcements happening here at TechEd. I encourage you to watch the session videos to learn more about these topics.</p>  <p>Enjoy!</p>  <p>&#160;</p>  <p><i>Follow me at </i><a href="https://twitter.com/jlzander"><i>https://twitter.com/jlzander</i></a><i>. </i></p>]]></content:encoded>
    </item>
    <item>
      <title>Gartner Recognizes Microsoft as an ALM Leader</title>
      <link>https://docs.microsoft.com/archive/blogs/jasonz/gartner-recognizes-microsoft-as-an-alm-leader</link>
      <pubDate>Sun, 10 Jun 2012 06:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Jason Zander]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jasonz/2012/06/10/gartner-recognizes-microsoft-as-an-alm-leader/</guid>
      <description><![CDATA[Gartner recently issued its 2012 Magic Quadrant report for Application Lifecycle Management (ALM)....]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.gartner.com/">Gartner</a> recently issued its 2012 Magic Quadrant report for Application Lifecycle Management (ALM). Gartner, one of the world&rsquo;s top IT research and advising companies, positioned Microsoft in the Leaders Quadrant in the ALM space. You can read more about the Magic Quadrant methodology <a href="http://www.gartner.com/technology/research/methodologies/research_mq.jsp">here</a>.<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/1425.image1_13048664.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/1425.image1_5F00_13048664.png" target="_blank"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/30/15/metablogapi/2502.image1_thumb_32472D37.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15-metablogapi/2502.image1_5F00_thumb_5F00_32472D37.png" width="598" height="624"></a></p><p><i><font size="1">This graphic was published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from Microsoft.</font></i><i>      <br></i><font size="1"><i>       <br>*</i><em>Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.</em></font><i></i></p><p>   <br>We&rsquo;re very excited to share this report, and for the industry recognition of our ALM tools! </p><p>Please note that the 2012 Magic Quadrant report is based on an evaluation of Visual Studio 2010. We believe Microsoft&rsquo;s position as a leader will continue to grow in Visual Studio 2012, where we&rsquo;re enabling stronger collaboration and reducing waste at each stage of the product delivery. You can find more information on Visual Studio 2012&rsquo;s features for continuous value delivery in an <a href="http://blogs.msdn.com/b/jasonz/archive/2012/05/23/continuous-value-delivery-with-visual-studio-11-alm.aspx">earlier post</a>. </p><p>In the 2012 Magic Quadrant report, Gartner mentions some trends driving companies that demand an integrated team approach, including enterprise agile and cloud computing . Both of these are core aspects of continuous value delivery, mentioned above. These trends are also present in how we&rsquo;re building software ourselves in Visual Studio, which you can see with Team Foundation Service, the cloud component of TFS. </p><p><b>Success Stories</b></p><p>Beyond the feature lists and analyst reports, when I meet with customers and partners, I often find that people are interested to hear stories about how others have integrated our tools into their software lifecycle. In case you&rsquo;re interested in the same, below are some recent case studies we&rsquo;ve compiled with examples from a few companies who have realized the benefits of emerging ALM practices through adopting our ALM solutions:</p><ul>   <li><a href="http://www.microsoft.com/casestudies/Windows-Server-2008-R2/ING-DIRECT-Australia/ING-DIRECT-accelerates-innovation-with-one-click-provisioning-copies-of-the-bank/710000000277">ING DIRECT accelerates innovation with one-click provisioning copies of the bank</a> </li>    <li><a href="http://www.microsoft.com/casestudies/Microsoft-Visual-Studio-2010-Ultimate/Artizone/Artisan-Food-Delivery-Website-Satisfies-Changing-Tastes-with-Flexible-Development/710000000461">Artizone Artisan Food-Delivery Website Satisfies Changing Tastes with Flexible Development</a> </li>    <li><a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=710000000646">QuestionMark: Software Company Boosts Productivity 67 Percent with Virtual Test Labs</a> </li> </ul><p><b>Conclusion</b></p><p>I hope you find this information helpful as you evaluate our ALM solutions. For further reading, you can find the full independent report, &ldquo;Gartner: Magic Quadrant for Application Life-cycle Management&rdquo; at the following link: </p><p><a href="http://www.gartner.com/technology/reprints.do?id=1-1ASCXON&amp;ct=120606&amp;st=sb">http://www.gartner.com/technology/reprints.do?id=1-1ASCXON&amp;ct=120606&amp;st=sb</a></p><p>I also encourage you to visit our new ALM page with further product details at <a href="http://www.microsoft.com/alm">microsoft.com/alm</a>.</p><p>&nbsp;</p><p>Enjoy!</p></p>
]]></content:encoded>
    </item>
  </channel>
</rss>