<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" version="2.0">
  <channel>
    <title>Random Thoughts By Me</title>
    <link>http://georgehandlin.com/</link>
    <description />
    <language>en-us</language>
    <copyright>George Handlin</copyright>
    <lastBuildDate>Mon, 14 Feb 2011 21:06:29 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>george@georgehandlin.com</managingEditor>
    <webMaster>george@georgehandlin.com</webMaster>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=b3375969-f978-439d-b36d-8093227f60aa</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,b3375969-f978-439d-b36d-8093227f60aa.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,b3375969-f978-439d-b36d-8093227f60aa.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b3375969-f978-439d-b36d-8093227f60aa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
You know, I like simple little nice enhancements that make things easier.  Like
the extension manager in Visual Studio restarting the project you were in after doing
an update that requires a restart of Visual Studio.  Phil Haack just <a href="http://haacked.com/archive/2011/02/12/nuget-1-1-released.aspx" target="_blank">blogged</a> about
the version 1.1 of NuGet being released.  I’ve applied plenty of extension updates
and of course Visual Studio handled restarting properly.  Just wanted to make
note of how those little things make a big difference in the user experience.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dfca06ef-faf0-4b7d-9544-fe1cf2259d5b" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/Visual+Studio" rel="tag">Visual Studio</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=b3375969-f978-439d-b36d-8093227f60aa" />
      </body>
      <title>It’s the simple things ….</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,b3375969-f978-439d-b36d-8093227f60aa.aspx</guid>
      <link>http://georgehandlin.com/2011/02/14/ItsTheSimpleThings.aspx</link>
      <pubDate>Mon, 14 Feb 2011 21:06:29 GMT</pubDate>
      <description>&lt;p&gt;
You know, I like simple little nice enhancements that make things easier.&amp;nbsp; Like
the extension manager in Visual Studio restarting the project you were in after doing
an update that requires a restart of Visual Studio.&amp;nbsp; Phil Haack just &lt;a href="http://haacked.com/archive/2011/02/12/nuget-1-1-released.aspx" target="_blank"&gt;blogged&lt;/a&gt; about
the version 1.1 of NuGet being released.&amp;nbsp; I’ve applied plenty of extension updates
and of course Visual Studio handled restarting properly.&amp;nbsp; Just wanted to make
note of how those little things make a big difference in the user experience.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dfca06ef-faf0-4b7d-9544-fe1cf2259d5b" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/Visual+Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=b3375969-f978-439d-b36d-8093227f60aa" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,b3375969-f978-439d-b36d-8093227f60aa.aspx</comments>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=ee5be950-f69d-4ca3-8051-1274d974df59</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,ee5be950-f69d-4ca3-8051-1274d974df59.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,ee5be950-f69d-4ca3-8051-1274d974df59.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ee5be950-f69d-4ca3-8051-1274d974df59</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In our <a href="http://georgehandlin.com/2011/01/20/KimmysCookbookPartII.aspx" target="_blank">previous
post</a>, we very quickly put together a site using asp.net mvc, Entity Framework
code first and MvcScaffolding templates.  That got it up and running, but of
course there’s still plenty to do.  But before we get going in more development,
let’s take a step back and look over the files so we understand what is going on.
</p>
        <p>
So, how does MVC work? MVC stands for Model View Controller.  The pattern lends
itself very well to having a good separation of concerns. That of course creates a
very testable architecture. One of the goals for asp.net mvc was to use convention
over configuration. How many times have you created a webforms application and had
a ton of configuration in web.config?  Webforms straight out of the box uses
a good deal of configuration just to get going.  MVC is structured in a predictable
way.  There is a controllers directory where all the controllers are to be housed
and a views directory where all the views are to be housed.  Routing is used
to define how a URL is parsed out to map to the controllers.  So, our default
route for KimmysCookbook.com is:
</p>
        <pre style="font-family: ">
          <font size="2" face="Consolas">           
routes.MapRoute(<br />
                <span><font color="#a31515">"Default"</font></span>, <span><font color="#008000">//
Route name</font></span><br />
                <span><font color="#a31515">"{controller}/{action}/{id}"</font></span>, <span><font color="#008000">//
URL with parameters</font></span><br />
                <span><font color="#0000ff">new</font></span> {
controller = <span><font color="#a31515">"Recipe"</font></span>, action = <span><font color="#a31515">"Index"</font></span>,
id = <span><font color="#2b91af">UrlParameter</font></span>.Optional } <span><font color="#008000">//
Parameter defaults</font></span><br />
            );</font>
        </pre>
        <p>
What this is saying is that when a URL comes in, the first part should map to a controller,
the second part to an action on that controller and the third part is a parameter
that will be passed to that action.  The last part defines the defaults. 
If no controller is is passed then the default is Recipe.  So in our case, when
a user navigates to <a href="http://www.kimmyscookbook.com">http://www.kimmyscookbook.com</a> mvc
will map that to <a href="http://www.kimmyscookbook.com/Recipe/Index">http://www.kimmyscookbook.com/Recipe/Index</a> . 
Notice how easy that URL is to read.  That URL tells the MVC framework to look
for a controller named RecipeController (the controller prefix is assumed by the framework)
and it looks in the Controllers directory off the root of the site for it.  Once
that type is loaded, it will look for the Index method within it and execute that
resource.  Notice I said resource.  That’s an important distinction. 
We are not serving up pages, rather we are serving resources.  So far the only
resource we have returned are Views, however we could return just plain content (text),
JSON, a file or even write our out ActionResult.  Just derive from ActionResult.
</p>
        <p>
Our current Index method on the Recipe controller is this:
</p>
        <pre style="font-family: ">
          <font size="2" face="Consolas">        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">ViewResult</font></span> Index()<br />
        {<br />
            <span><font color="#0000ff">return</font></span> View(<span><font color="#0000ff">this</font></span>.repository.GetAllRecipes());<br />
        }</font>
        </pre>
        <p>
This is returning a View.  By default, the framework is going to seek out a view
in the Views/Recipe directory.  Again, convention over configuration.  It
will also search the Shared directory as well.
</p>
        <p>
Our model in this case is an IEnumerable&lt;Recipe&gt;. So we are passing a list of
Recipes to the view.  The view’s job is simply to display the model passed to
it.  The view is intended to be very simple, therefore you don’t have a code
behind file as you do in webforms.  
</p>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=ee5be950-f69d-4ca3-8051-1274d974df59" />
      </body>
      <title>Going over the files in KimmysCookbook</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,ee5be950-f69d-4ca3-8051-1274d974df59.aspx</guid>
      <link>http://georgehandlin.com/2011/02/07/GoingOverTheFilesInKimmysCookbook.aspx</link>
      <pubDate>Mon, 07 Feb 2011 22:48:40 GMT</pubDate>
      <description>&lt;p&gt;
In our &lt;a href="http://georgehandlin.com/2011/01/20/KimmysCookbookPartII.aspx" target="_blank"&gt;previous
post&lt;/a&gt;, we very quickly put together a site using asp.net mvc, Entity Framework
code first and MvcScaffolding templates.&amp;nbsp; That got it up and running, but of
course there’s still plenty to do.&amp;nbsp; But before we get going in more development,
let’s take a step back and look over the files so we understand what is going on.
&lt;/p&gt;
&lt;p&gt;
So, how does MVC work? MVC stands for Model View Controller.&amp;nbsp; The pattern lends
itself very well to having a good separation of concerns. That of course creates a
very testable architecture. One of the goals for asp.net mvc was to use convention
over configuration. How many times have you created a webforms application and had
a ton of configuration in web.config?&amp;nbsp; Webforms straight out of the box uses
a good deal of configuration just to get going.&amp;nbsp; MVC is structured in a predictable
way.&amp;nbsp; There is a controllers directory where all the controllers are to be housed
and a views directory where all the views are to be housed.&amp;nbsp; Routing is used
to define how a URL is parsed out to map to the controllers.&amp;nbsp; So, our default
route for KimmysCookbook.com is:
&lt;/p&gt;
&lt;pre style="font-family: "&gt;&lt;font size="2" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
routes.MapRoute(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#a31515"&gt;"Default"&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#008000"&gt;//
Route name&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#a31515"&gt;"{controller}/{action}/{id}"&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#008000"&gt;//
URL with parameters&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; {
controller = &lt;span&gt;&lt;font color="#a31515"&gt;"Recipe"&lt;/font&gt;&lt;/span&gt;, action = &lt;span&gt;&lt;font color="#a31515"&gt;"Index"&lt;/font&gt;&lt;/span&gt;,
id = &lt;span&gt;&lt;font color="#2b91af"&gt;UrlParameter&lt;/font&gt;&lt;/span&gt;.Optional } &lt;span&gt;&lt;font color="#008000"&gt;//
Parameter defaults&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
What this is saying is that when a URL comes in, the first part should map to a controller,
the second part to an action on that controller and the third part is a parameter
that will be passed to that action.&amp;nbsp; The last part defines the defaults.&amp;nbsp;
If no controller is is passed then the default is Recipe.&amp;nbsp; So in our case, when
a user navigates to &lt;a href="http://www.kimmyscookbook.com"&gt;http://www.kimmyscookbook.com&lt;/a&gt; mvc
will map that to &lt;a href="http://www.kimmyscookbook.com/Recipe/Index"&gt;http://www.kimmyscookbook.com/Recipe/Index&lt;/a&gt; .&amp;nbsp;
Notice how easy that URL is to read.&amp;nbsp; That URL tells the MVC framework to look
for a controller named RecipeController (the controller prefix is assumed by the framework)
and it looks in the Controllers directory off the root of the site for it.&amp;nbsp; Once
that type is loaded, it will look for the Index method within it and execute that
resource.&amp;nbsp; Notice I said resource.&amp;nbsp; That’s an important distinction.&amp;nbsp;
We are not serving up pages, rather we are serving resources.&amp;nbsp; So far the only
resource we have returned are Views, however we could return just plain content (text),
JSON, a file or even write our out ActionResult.&amp;nbsp; Just derive from ActionResult.
&lt;/p&gt;
&lt;p&gt;
Our current Index method on the Recipe controller is this:
&lt;/p&gt;
&lt;pre style="font-family: "&gt;&lt;font size="2" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ViewResult&lt;/font&gt;&lt;/span&gt; Index()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; View(&lt;span&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.repository.GetAllRecipes());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
This is returning a View.&amp;nbsp; By default, the framework is going to seek out a view
in the Views/Recipe directory.&amp;nbsp; Again, convention over configuration.&amp;nbsp; It
will also search the Shared directory as well.
&lt;/p&gt;
&lt;p&gt;
Our model in this case is an IEnumerable&amp;lt;Recipe&amp;gt;. So we are passing a list of
Recipes to the view.&amp;nbsp; The view’s job is simply to display the model passed to
it.&amp;nbsp; The view is intended to be very simple, therefore you don’t have a code
behind file as you do in webforms.&amp;nbsp; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=ee5be950-f69d-4ca3-8051-1274d974df59" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,ee5be950-f69d-4ca3-8051-1274d974df59.aspx</comments>
      <category>mvc</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=6fa5cf42-72c6-4ed3-a4db-244fcc5510f5</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,6fa5cf42-72c6-4ed3-a4db-244fcc5510f5.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,6fa5cf42-72c6-4ed3-a4db-244fcc5510f5.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6fa5cf42-72c6-4ed3-a4db-244fcc5510f5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ok, well, for whatever reason, I wasn’t able to get the old project working with MvcScaffolding
after updating to the RTM of MVC 3.  I had even run the upgrade tool.  We
are and were dealing with beta software, sometimes that’s what happens.  Thankfully
we weren’t too far along.  So, what I’ve done is created a new project and simply
added all our model classes to the new project.
</p>
        <p>
I then reinstalled our packages from NuGet:
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb.png" width="644" height="137" />
          </a>
        </p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_4.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_1.png" width="644" height="150" />
          </a>
        </p>
        <p>
Now we will do some scaffolding.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_6.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_2.png" width="644" height="205" />
          </a>
        </p>
        <p>
Change the default route to point to our Recipe Controller:
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_10.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_4.png" width="644" height="147" />
          </a>
        </p>
        <p>
And wa-la, we’ve got a running application.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_12.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_5.png" width="644" height="358" />
          </a>
        </p>
        <p>
Since we never defined a connection string for the application, it created a new database
in our Sql Server Express instance with the fully qualified name of the context class.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_14.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_6.png" width="531" height="484" />
          </a>
        </p>
        <p>
So you can see that outside of create our model classes, everything else can be automated
and done very quickly.  Understanding what is actually going on is important,
so next we’ll look in more detail at the files that were created.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f4e22eb7-58a6-4525-bc9a-f804097cf229" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/asp.net+mvc" rel="tag">asp.net mvc</a>,<a href="http://technorati.com/tags/Entity+Framework" rel="tag">Entity
Framework</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=6fa5cf42-72c6-4ed3-a4db-244fcc5510f5" />
      </body>
      <title>Kimmy’s Cookbook Part II</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,6fa5cf42-72c6-4ed3-a4db-244fcc5510f5.aspx</guid>
      <link>http://georgehandlin.com/2011/01/20/KimmysCookbookPartII.aspx</link>
      <pubDate>Thu, 20 Jan 2011 22:52:44 GMT</pubDate>
      <description>&lt;p&gt;
Ok, well, for whatever reason, I wasn’t able to get the old project working with MvcScaffolding
after updating to the RTM of MVC 3.&amp;nbsp; I had even run the upgrade tool.&amp;nbsp; We
are and were dealing with beta software, sometimes that’s what happens.&amp;nbsp; Thankfully
we weren’t too far along.&amp;nbsp; So, what I’ve done is created a new project and simply
added all our model classes to the new project.
&lt;/p&gt;
&lt;p&gt;
I then reinstalled our packages from NuGet:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb.png" width="644" height="137"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_1.png" width="644" height="150"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Now we will do some scaffolding.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_2.png" width="644" height="205"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Change the default route to point to our Recipe Controller:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_10.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_4.png" width="644" height="147"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
And wa-la, we’ve got a running application.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_12.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_5.png" width="644" height="358"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Since we never defined a connection string for the application, it created a new database
in our Sql Server Express instance with the fully qualified name of the context class.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_14.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/2d7db2d60c13_B5B1/image_thumb_6.png" width="531" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
So you can see that outside of create our model classes, everything else can be automated
and done very quickly.&amp;nbsp; Understanding what is actually going on is important,
so next we’ll look in more detail at the files that were created.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f4e22eb7-58a6-4525-bc9a-f804097cf229" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/asp.net+mvc" rel="tag"&gt;asp.net mvc&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Entity+Framework" rel="tag"&gt;Entity
Framework&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=6fa5cf42-72c6-4ed3-a4db-244fcc5510f5" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,6fa5cf42-72c6-4ed3-a4db-244fcc5510f5.aspx</comments>
      <category>.NET</category>
      <category>Entity Framework</category>
      <category>mvc</category>
      <category>SQL Server</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=45e03305-1dc8-4b3a-ad6d-0198815aab81</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,45e03305-1dc8-4b3a-ad6d-0198815aab81.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,45e03305-1dc8-4b3a-ad6d-0198815aab81.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=45e03305-1dc8-4b3a-ad6d-0198815aab81</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ok, so MVC 3 just RTM’d, so we are going to take a step back and upgrade.  First
off, go uninstall the RC – be sure to uninstall both mvc 3 and the vs tools. 
Once that is done you can open Web PI and install mvc 3.  If you don’t have Web
PI yet, you can get 3.0 from here. <a title="http://www.microsoft.com/web/downloads/platform.aspx" href="http://www.microsoft.com/web/downloads/platform.aspx">http://www.microsoft.com/web/downloads/platform.aspx</a> 
</p>
        <p>
In reading the release notes, which you can download <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d2928bc1-f48c-4e95-a064-2a455a22c8f6" target="_blank">here</a>,
seems we shouldn’t have any issues moving this project forward since we are so new
into it. The install takes quite a while because it does some updates to Visual Studio
as well.
</p>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=45e03305-1dc8-4b3a-ad6d-0198815aab81" />
      </body>
      <title>ASP.NET MVC 3 RTM</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,45e03305-1dc8-4b3a-ad6d-0198815aab81.aspx</guid>
      <link>http://georgehandlin.com/2011/01/17/ASPNETMVC3RTM.aspx</link>
      <pubDate>Mon, 17 Jan 2011 17:57:01 GMT</pubDate>
      <description>&lt;p&gt;
Ok, so MVC 3 just RTM’d, so we are going to take a step back and upgrade.&amp;nbsp; First
off, go uninstall the RC – be sure to uninstall both mvc 3 and the vs tools.&amp;nbsp;
Once that is done you can open Web PI and install mvc 3.&amp;nbsp; If you don’t have Web
PI yet, you can get 3.0 from here. &lt;a title="http://www.microsoft.com/web/downloads/platform.aspx" href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;http://www.microsoft.com/web/downloads/platform.aspx&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
In reading the release notes, which you can download &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d2928bc1-f48c-4e95-a064-2a455a22c8f6" target="_blank"&gt;here&lt;/a&gt;,
seems we shouldn’t have any issues moving this project forward since we are so new
into it. The install takes quite a while because it does some updates to Visual Studio
as well.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=45e03305-1dc8-4b3a-ad6d-0198815aab81" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,45e03305-1dc8-4b3a-ad6d-0198815aab81.aspx</comments>
      <category>mvc</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=8a084a0f-d051-48ba-87dc-5ef06521add1</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,8a084a0f-d051-48ba-87dc-5ef06521add1.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,8a084a0f-d051-48ba-87dc-5ef06521add1.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8a084a0f-d051-48ba-87dc-5ef06521add1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:df043f41-c17e-422d-957f-d3196f7631c3" class="wlWriterEditableSmartContent">
          <div id="7be884d1-78fd-4e99-be69-888202f53b82" style="margin: 0px; padding: 0px; display: inline;">
            <div>
              <a href="http://www.youtube.com/watch?v=Gc4HGQHgeFE" target="_new">
                <img src="http://georgehandlin.com/content/binary/Windows-Live-Writer/When-you-are-down-think-of-this_E468/videoe817de5cf505.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('7be884d1-78fd-4e99-be69-888202f53b82'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;640\&quot; height=\&quot;385\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/Gc4HGQHgeFE?hl=en&amp;hd=1\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/Gc4HGQHgeFE?hl=en&amp;hd=1\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;640\&quot; height=\&quot;385\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt="" />
              </a>
            </div>
          </div>
        </div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=8a084a0f-d051-48ba-87dc-5ef06521add1" />
      </body>
      <title>When you are down, think of this.</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,8a084a0f-d051-48ba-87dc-5ef06521add1.aspx</guid>
      <link>http://georgehandlin.com/2011/01/14/WhenYouAreDownThinkOfThis.aspx</link>
      <pubDate>Fri, 14 Jan 2011 21:14:58 GMT</pubDate>
      <description>&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:df043f41-c17e-422d-957f-d3196f7631c3" class="wlWriterEditableSmartContent"&gt;
&lt;div id="7be884d1-78fd-4e99-be69-888202f53b82" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=Gc4HGQHgeFE" target="_new"&gt;&lt;img src="http://georgehandlin.com/content/binary/Windows-Live-Writer/When-you-are-down-think-of-this_E468/videoe817de5cf505.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('7be884d1-78fd-4e99-be69-888202f53b82'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;640\&amp;quot; height=\&amp;quot;385\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/Gc4HGQHgeFE?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/Gc4HGQHgeFE?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;640\&amp;quot; height=\&amp;quot;385\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=8a084a0f-d051-48ba-87dc-5ef06521add1" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,8a084a0f-d051-48ba-87dc-5ef06521add1.aspx</comments>
      <category>Uplifting</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=39f356f4-4c3d-46f2-9bac-727948a0bcaf</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,39f356f4-4c3d-46f2-9bac-727948a0bcaf.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,39f356f4-4c3d-46f2-9bac-727948a0bcaf.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=39f356f4-4c3d-46f2-9bac-727948a0bcaf</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ok, so maybe that’s not correct … do Roman numerals even have decimals.  Hmmm…
maybe I should have paid a bit more attention in that class. In <a href="http://georgehandlin.com/2011/01/08/KimmysCookbookPartI.aspx" target="_blank">Part
I</a> we set up our classes and data access “layer”.  Thanks to ErikEJ letting
me know of a provider that he – uh – provided for SQL CE, we’ll integrate that in. 
Since this wasn’t in the original plan, we’ll call this I.V or 1.5.  <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Part-I.V_9436/wlEmoticon-smile_2.png" /></p>
        <p>
You can go get the files from <a href="http://sqlcemembership.codeplex.com/" target="_blank">here</a>. 
I’m just going to include the files rather than the binary.  I found an issue
in the SqlCeMembershipUtils.cs file in the CreateDatabaseIfNeeded method.  It
has to do with how the path shows up.  When checking for the file, the connection
returns the following for the Database (path) property, which of course is not the
path to the actual sdf file.  The connection works however.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Part-I.V_9436/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Part-I.V_9436/image_thumb.png" width="644" height="219" />
          </a>
        </p>
        <p>
So, I’ve modified that method like so:
</p>
        <pre style="font-family: ">
          <font size="2" face="Consolas">        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">static</font></span> <span><font color="#0000ff">void</font></span> CreateDatabaseIfRequired(<span><font color="#0000ff">string</font></span> connection)<br />
        {<br />
            <span><font color="#0000ff">string</font></span> dataDirectory
= <span><font color="#2b91af">AppDomain</font></span>.CurrentDomain.GetData(<span><font color="#a31515">"DataDirectory"</font></span>) <span><font color="#0000ff">as</font></span> <span><font color="#0000ff">string</font></span>;<br />
            <span><font color="#0000ff">string</font></span> physConnectionString
= connection.Replace(<span><font color="#a31515">"|DataDirectory|"</font></span>,
dataDirectory);<br />
            <span><font color="#0000ff">string</font></span>[]
parts = connection.Split(<span><font color="#a31515">'|'</font></span>);<br />
            <span><font color="#0000ff">string</font></span> physFileString
= <span><font color="#2b91af">Path</font></span>.Combine(dataDirectory, parts[parts.Length
- 1]);<br /><br />
            <span><font color="#0000ff">string</font></span> sdfPath
= <span><font color="#0000ff">string</font></span>.Empty;<br />
            <span><font color="#0000ff">lock</font></span> (_lock)<br />
            {<br />
                <span><font color="#0000ff">using</font></span> (<span><font color="#0000ff">var</font></span> testConn
= <span><font color="#0000ff">new</font></span> <span><font color="#2b91af">SqlCeConnection</font></span>(physConnectionString))<br />
               
{<br />
                   
sdfPath = testConn.Database;<br />
               
}<br />
                <span><font color="#0000ff">if</font></span> (<span><font color="#0000ff">string</font></span>.IsNullOrWhiteSpace(sdfPath))<br />
                    <span><font color="#0000ff">return</font></span>;<br /><br />
                <span><font color="#0000ff">if</font></span> (!System.IO.<span><font color="#2b91af">File</font></span>.Exists(physFileString))<br />
               
{<br />
                    <span><font color="#008000">//OK,
try to create the database file</font></span><br />
                    <span><font color="#0000ff">using</font></span> (<span><font color="#0000ff">var</font></span> engine
= <span><font color="#0000ff">new</font></span> <span><font color="#2b91af">SqlCeEngine</font></span>(connection))<br />
                   
{<br />
                       
engine.CreateDatabase();<br />
                   
}<br />
               
}<br />
               
ValidateDatabase(connection);<br />
            }<br />
        }</font>
        </pre>
        <p>
You will of course need to modify the connections in web.config for the membership
provider and add using System.IO; to the top.  The other option would be to skip
the file check and just eat the exception if it’s because of the file already existing.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c2d680ce-d772-4f59-88d7-f058d7dd5c03" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/asp.net+mvc" rel="tag">asp.net mvc</a>,<a href="http://technorati.com/tags/Entity+Framework" rel="tag">Entity
Framework</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=39f356f4-4c3d-46f2-9bac-727948a0bcaf" />
      </body>
      <title>Kimmy’s Cookbook Part I.V</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,39f356f4-4c3d-46f2-9bac-727948a0bcaf.aspx</guid>
      <link>http://georgehandlin.com/2011/01/12/KimmysCookbookPartIV.aspx</link>
      <pubDate>Wed, 12 Jan 2011 19:42:48 GMT</pubDate>
      <description>&lt;p&gt;
Ok, so maybe that’s not correct … do Roman numerals even have decimals.&amp;nbsp; Hmmm…
maybe I should have paid a bit more attention in that class. In &lt;a href="http://georgehandlin.com/2011/01/08/KimmysCookbookPartI.aspx" target="_blank"&gt;Part
I&lt;/a&gt; we set up our classes and data access “layer”.&amp;nbsp; Thanks to ErikEJ letting
me know of a provider that he – uh – provided for SQL CE, we’ll integrate that in.&amp;nbsp;
Since this wasn’t in the original plan, we’ll call this I.V or 1.5.&amp;nbsp; &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Part-I.V_9436/wlEmoticon-smile_2.png"&gt;
&lt;/p&gt;
&lt;p&gt;
You can go get the files from &lt;a href="http://sqlcemembership.codeplex.com/" target="_blank"&gt;here&lt;/a&gt;.&amp;nbsp;
I’m just going to include the files rather than the binary.&amp;nbsp; I found an issue
in the SqlCeMembershipUtils.cs file in the CreateDatabaseIfNeeded method.&amp;nbsp; It
has to do with how the path shows up.&amp;nbsp; When checking for the file, the connection
returns the following for the Database (path) property, which of course is not the
path to the actual sdf file.&amp;nbsp; The connection works however.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Part-I.V_9436/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Part-I.V_9436/image_thumb.png" width="644" height="219"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
So, I’ve modified that method like so:
&lt;/p&gt;
&lt;pre style="font-family: "&gt;&lt;font size="2" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; CreateDatabaseIfRequired(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; connection)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; dataDirectory
= &lt;span&gt;&lt;font color="#2b91af"&gt;AppDomain&lt;/font&gt;&lt;/span&gt;.CurrentDomain.GetData(&lt;span&gt;&lt;font color="#a31515"&gt;"DataDirectory"&lt;/font&gt;&lt;/span&gt;) &lt;span&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; physConnectionString
= connection.Replace(&lt;span&gt;&lt;font color="#a31515"&gt;"|DataDirectory|"&lt;/font&gt;&lt;/span&gt;,
dataDirectory);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;[]
parts = connection.Split(&lt;span&gt;&lt;font color="#a31515"&gt;'|'&lt;/font&gt;&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; physFileString
= &lt;span&gt;&lt;font color="#2b91af"&gt;Path&lt;/font&gt;&lt;/span&gt;.Combine(dataDirectory, parts[parts.Length
- 1]);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; sdfPath
= &lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.Empty;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;lock&lt;/font&gt;&lt;/span&gt; (_lock)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; testConn
= &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;SqlCeConnection&lt;/font&gt;&lt;/span&gt;(physConnectionString))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
sdfPath = testConn.Database;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.IsNullOrWhiteSpace(sdfPath))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (!System.IO.&lt;span&gt;&lt;font color="#2b91af"&gt;File&lt;/font&gt;&lt;/span&gt;.Exists(physFileString))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;//OK,
try to create the database file&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; engine
= &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;SqlCeEngine&lt;/font&gt;&lt;/span&gt;(connection))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
engine.CreateDatabase();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
ValidateDatabase(connection);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
You will of course need to modify the connections in web.config for the membership
provider and add using System.IO; to the top.&amp;nbsp; The other option would be to skip
the file check and just eat the exception if it’s because of the file already existing.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c2d680ce-d772-4f59-88d7-f058d7dd5c03" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/asp.net+mvc" rel="tag"&gt;asp.net mvc&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Entity+Framework" rel="tag"&gt;Entity
Framework&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=39f356f4-4c3d-46f2-9bac-727948a0bcaf" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,39f356f4-4c3d-46f2-9bac-727948a0bcaf.aspx</comments>
      <category>Entity Framework</category>
      <category>mvc</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=65be4f57-12f5-47af-9b64-a333423c07b8</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,65be4f57-12f5-47af-9b64-a333423c07b8.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,65be4f57-12f5-47af-9b64-a333423c07b8.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=65be4f57-12f5-47af-9b64-a333423c07b8</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you haven’t already, go install <a href="http://go.microsoft.com/fwlink/?LinkID=191797" target="_blank">mvc
3 RC</a>.  This will also install NuGet which we will be using.  You can
read more about mvc 3 and NuGet on ScottGu’s <a href="http://bit.ly/gkk7A6" target="_blank">blog</a>. 
</p>
        <p>
Create a new MVC 3 Web Application and use Razor for the view engine.  Probably
a good idea to tick on the unit test box to create unit tests.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_4.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_thumb_1.png" width="529" height="484" />
          </a>
        </p>
        <p>
Next get the Package Manager Console open.  View | Other Windows | Package Manager
Console
</p>
        <p>
Now we want to install the Entity Framework Code First libraries.  NuGet makes
this very easy:
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_6.png">
            <img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_thumb_2.png" width="644" height="116" />
          </a>
        </p>
        <p>
The console window support auto-completion, so just type Ins [TAB] and a list of options
will show. Choose Install-Package then type EFC [TAB] to choose through a list of
packages.  Couldn’t be easier.  I’m not going to go into details about what
that does, you can read all about it in ScottGu’s posts and the video of Scott Hanselman’s
talk.
</p>
        <p>
In our first <a href="http://georgehandlin.com/2010/12/27/KimmysCookbookcom.aspx" target="_blank">post</a> in
the series, our first goal was to make a quick site.  Doing it quickly means
we are going to let the Entity Framework create the database for us.  We will
also be using SQL CE so there won’t be a full database dependency.  SQL CE 4.0
is now bin deployable, so we can just copy it up and it’ll work.
</p>
        <p>
EF, much like MVC, uses convention over configuration.  So, since our context
(code to follow) is going to be named Cookbook, if we create a connection string entry
called Cookbook, EF will automatically use that.
</p>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff"> 
&lt;</font>
              </span>
              <span>
                <font color="#a31515">connectionStrings</font>
              </span>
            </font>
          </font>
          <font face="Consolas">
            <font size="2">
              <font color="#0000ff">
                <span>&gt;</span>
                <br />
                <span>    &lt;</span>
              </font>
              <span>
                <font color="#a31515">add</font>
              </span>
              <span>
                <font color="#0000ff"> </font>
              </span>
              <span>
                <font color="#ff0000">name</font>
              </span>
              <span>
                <font color="#0000ff">=</font>
              </span>"<span><font color="#0000ff">Cookbook</font></span>"<span><font color="#0000ff"> </font></span><span><font color="#ff0000">connectionString</font></span><span><font color="#0000ff">=</font></span>"<span><font color="#0000ff">Data
Source=|DataDirectory|KimmysCookbook.sdf</font></span>"<span><font color="#0000ff"> </font></span><span><font color="#ff0000">providerName</font></span><span><font color="#0000ff">=</font></span>"<span><font color="#0000ff">System.Data.SqlServerCe.4.0</font></span>"</font>
          </font>
          <font face="Consolas">
            <font size="2">
              <font color="#0000ff">
                <span>/&gt;</span>
                <br />
                <span>  &lt;/</span>
              </font>
              <span>
                <font color="#a31515">connectionStrings</font>
              </span>
              <span>
                <font color="#0000ff">&gt;</font>
              </span>
            </font>
          </font>
        </pre>
        <p>
As an aside, if you don’t create a connectionstring at all, EF CTP5 will create a
Sql Server CE 4.0 database under the App_Data directory for you using the fully qualified
type name as the name of the database.
</p>
        <p>
Now for our Context class.  We’ll create each of our supporting classes as we
go.  Right click on the Models folder and add a class.  As you are typing,
as you put in the classes for the generic collections, pressing Ctrl-. will present
you with a context of options.  Since the classes won’t exist yet, you can have
VS create the classes for you right then.  They will of course be empty, but
the shell is there.  VS is also intelligent enough to put them in the same folder
as the current class with the same namespace.  So, when you type <strong><em>public
DbSet&lt;Recipe</em></strong>, you’ll get a squiggly saying that <strong>Recipe</strong> doesn’t
exist.  Ctrl-. and choose to have it create the class for you.
</p>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Web;<br /><span><font color="#0000ff">using</font></span> System.Data.Entity;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Cookbook</font></span> : <span><font color="#2b91af">DbContext</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DbSet</font></span>&lt;<span><font color="#2b91af">Recipe</font></span>&gt;
Recipes { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DbSet</font></span>&lt;<span><font color="#2b91af">Ingredient</font></span>&gt;
Ingredients { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DbSet</font></span>&lt;<span><font color="#2b91af">Comment</font></span>&gt;
Comments { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DbSet</font></span>&lt;<span><font color="#2b91af">Favorite</font></span>&gt;
Favorites { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DbSet</font></span>&lt;<span><font color="#2b91af">Tag</font></span>&gt;
Tags { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DbSet</font></span>&lt;<span><font color="#2b91af">Rating</font></span>&gt;
Ratings { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <p>
The above context class is all that is needed for data access.
</p>
        <p>
Let’s fill in the rest of our classes.
</p>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Web;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Recipe</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> ID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">Guid</font></span> UserID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Title
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Description
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public long</font></span> PrepTime
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public long</font></span> CookTime
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> Serves
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Instructions
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> IPAddress
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br /><br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">virtual</font></span> <span><font color="#2b91af">ICollection</font></span>&lt;<span><font color="#2b91af">Ingredient</font></span>&gt;
Ingredients { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">virtual</font></span> <span><font color="#2b91af">ICollection</font></span>&lt;<span><font color="#2b91af">Tag</font></span>&gt;
Tags { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">virtual</font></span> <span><font color="#2b91af">ICollection</font></span>&lt;<span><font color="#2b91af">Comment</font></span>&gt;
Comments { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">virtual</font></span> <span><font color="#2b91af">ICollection</font></span>&lt;<span><font color="#2b91af">Rating</font></span>&gt;
Ratings { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">virtual</font></span> <span><font color="#2b91af">ICollection</font></span>&lt;<span><font color="#2b91af">Favorite</font></span>&gt;
Favorites { <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Text;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Ingredient</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> ID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> RecipeID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Name
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Description
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Text;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#808080">///</font></span><span><font color="#008000"> </font></span><span><font color="#808080">&lt;summary&gt;</font></span><br />
    <span><font color="#808080">///</font></span><span><font color="#008000"> This
is for user based tagging</font></span><br />
    <span><font color="#808080">///</font></span><span><font color="#008000"> </font></span><span><font color="#808080">&lt;/summary&gt;</font></span><br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Tag</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> ID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> RecipeID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">Guid</font></span> UserID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Value
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Text;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Comment</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> ID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> RecipeID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">Guid</font></span> UserID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> Text
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> IPAddress
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Text;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#808080">///</font></span><span><font color="#008000"> </font></span><span><font color="#808080">&lt;summary&gt;</font></span><br />
    <span><font color="#808080">///</font></span><span><font color="#008000"> This
is to tag a recipe as a favorite for a user</font></span><br />
    <span><font color="#808080">///</font></span><span><font color="#008000"> </font></span><span><font color="#808080">&lt;/summary&gt;</font></span><br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Favorite</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> ID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> RecipeID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">Guid</font></span> UserID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DateTime</font></span> DateFavorited
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <pre style="font-family: ">
          <font face="Consolas">
            <font size="2">
              <span>
                <font color="#0000ff">using</font>
              </span> System;<br /><span><font color="#0000ff">using</font></span> System.Collections.Generic;<br /><span><font color="#0000ff">using</font></span> System.Linq;<br /><span><font color="#0000ff">using</font></span> System.Text;<br /><br /><span><font color="#0000ff">namespace</font></span> KimmysCookbook.Models<br />
{<br />
    <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">class</font></span> <span><font color="#2b91af">Rating</font></span><br />
    {<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> ID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> RecipeID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">Guid</font></span> UserID
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">int</font></span> Value
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#2b91af">DateTime</font></span> RatingDate
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
        <span><font color="#0000ff">public</font></span> <span><font color="#0000ff">string</font></span> IPAddress
{ <span><font color="#0000ff">get</font></span>; <span><font color="#0000ff">set</font></span>;
}<br />
    }<br />
}</font>
          </font>
        </pre>
        <p>
        </p>
        <p>
You’ll notice in the classes that the UserID field is a Guid. In this iteration, we
are going to use the Membership provider that is baked into asp.net. In a future release,
we plan to use OpenID instead. That being said and to keep it simple, we want to have
the membership baked into the database that EF is going to create.  Unfortunately,
SQL CE 4 still doesn’t support stored procedures so the current implementation of
membership won’t work with it.  According to <a href="http://weblogs.asp.net/scottgu" target="_blank">ScottGu</a>’s <a href="http://weblogs.asp.net/scottgu/archive/2010/06/30/new-embedded-database-support-with-asp-net.aspx#7550165" target="_blank">post</a>,
they are looking into create a set of providers that will work with it.  
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:57fbb0b1-71aa-45b6-95b6-1765f1ba3f3b" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/asp.net+mvc" rel="tag">asp.net mvc</a>,<a href="http://technorati.com/tags/Entity+Framework" rel="tag">Entity
Framework</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=65be4f57-12f5-47af-9b64-a333423c07b8" />
      </body>
      <title>Kimmy’s Cookbook Part I</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,65be4f57-12f5-47af-9b64-a333423c07b8.aspx</guid>
      <link>http://georgehandlin.com/2011/01/08/KimmysCookbookPartI.aspx</link>
      <pubDate>Sat, 08 Jan 2011 20:22:55 GMT</pubDate>
      <description>&lt;p&gt;
If you haven’t already, go install &lt;a href="http://go.microsoft.com/fwlink/?LinkID=191797" target="_blank"&gt;mvc
3 RC&lt;/a&gt;.&amp;nbsp; This will also install NuGet which we will be using.&amp;nbsp; You can
read more about mvc 3 and NuGet on ScottGu’s &lt;a href="http://bit.ly/gkk7A6" target="_blank"&gt;blog&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Create a new MVC 3 Web Application and use Razor for the view engine.&amp;nbsp; Probably
a good idea to tick on the unit test box to create unit tests.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_thumb_1.png" width="529" height="484"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Next get the Package Manager Console open.&amp;nbsp; View | Other Windows | Package Manager
Console
&lt;/p&gt;
&lt;p&gt;
Now we want to install the Entity Framework Code First libraries.&amp;nbsp; NuGet makes
this very easy:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Kimmys-Cookbook-Phase-II_EA3B/image_thumb_2.png" width="644" height="116"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The console window support auto-completion, so just type Ins [TAB] and a list of options
will show. Choose Install-Package then type EFC [TAB] to choose through a list of
packages.&amp;nbsp; Couldn’t be easier.&amp;nbsp; I’m not going to go into details about what
that does, you can read all about it in ScottGu’s posts and the video of Scott Hanselman’s
talk.
&lt;/p&gt;
&lt;p&gt;
In our first &lt;a href="http://georgehandlin.com/2010/12/27/KimmysCookbookcom.aspx" target="_blank"&gt;post&lt;/a&gt; in
the series, our first goal was to make a quick site.&amp;nbsp; Doing it quickly means
we are going to let the Entity Framework create the database for us.&amp;nbsp; We will
also be using SQL CE so there won’t be a full database dependency.&amp;nbsp; SQL CE 4.0
is now bin deployable, so we can just copy it up and it’ll work.
&lt;/p&gt;
&lt;p&gt;
EF, much like MVC, uses convention over configuration.&amp;nbsp; So, since our context
(code to follow) is going to be named Cookbook, if we create a connection string entry
called Cookbook, EF will automatically use that.
&lt;/p&gt;
&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;
&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;connectionStrings&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;add&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;name&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span&gt;&lt;font color="#0000ff"&gt;Cookbook&lt;/font&gt;&lt;/span&gt;"&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;connectionString&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span&gt;&lt;font color="#0000ff"&gt;Data
Source=|DataDirectory|KimmysCookbook.sdf&lt;/font&gt;&lt;/span&gt;"&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;providerName&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;"&lt;span&gt;&lt;font color="#0000ff"&gt;System.Data.SqlServerCe.4.0&lt;/font&gt;&lt;/span&gt;"&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#a31515"&gt;connectionStrings&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
As an aside, if you don’t create a connectionstring at all, EF CTP5 will create a
Sql Server CE 4.0 database under the App_Data directory for you using the fully qualified
type name as the name of the database.
&lt;/p&gt;
&lt;p&gt;
Now for our Context class.&amp;nbsp; We’ll create each of our supporting classes as we
go.&amp;nbsp; Right click on the Models folder and add a class.&amp;nbsp; As you are typing,
as you put in the classes for the generic collections, pressing Ctrl-. will present
you with a context of options.&amp;nbsp; Since the classes won’t exist yet, you can have
VS create the classes for you right then.&amp;nbsp; They will of course be empty, but
the shell is there.&amp;nbsp; VS is also intelligent enough to put them in the same folder
as the current class with the same namespace.&amp;nbsp; So, when you type &lt;strong&gt;&lt;em&gt;public
DbSet&amp;lt;Recipe&lt;/em&gt;&lt;/strong&gt;, you’ll get a squiggly saying that &lt;strong&gt;Recipe&lt;/strong&gt; doesn’t
exist.&amp;nbsp; Ctrl-. and choose to have it create the class for you.
&lt;/p&gt;
&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Web;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Data.Entity;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Cookbook&lt;/font&gt;&lt;/span&gt; : &lt;span&gt;&lt;font color="#2b91af"&gt;DbContext&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DbSet&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Recipe&lt;/font&gt;&lt;/span&gt;&amp;gt;
Recipes { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DbSet&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Ingredient&lt;/font&gt;&lt;/span&gt;&amp;gt;
Ingredients { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DbSet&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Comment&lt;/font&gt;&lt;/span&gt;&amp;gt;
Comments { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DbSet&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Favorite&lt;/font&gt;&lt;/span&gt;&amp;gt;
Favorites { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DbSet&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Tag&lt;/font&gt;&lt;/span&gt;&amp;gt;
Tags { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DbSet&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Rating&lt;/font&gt;&lt;/span&gt;&amp;gt;
Ratings { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
The above context class is all that is needed for data access.
&lt;/p&gt;
&lt;p&gt;
Let’s fill in the rest of our classes.
&lt;/p&gt;
&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Web;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Recipe&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; ID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; UserID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Title
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Description
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public long&lt;/font&gt;&lt;/span&gt; PrepTime
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public long&lt;/font&gt;&lt;/span&gt; CookTime
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; Serves
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Instructions
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; IPAddress
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;virtual&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ICollection&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Ingredient&lt;/font&gt;&lt;/span&gt;&amp;gt;
Ingredients { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;virtual&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ICollection&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Tag&lt;/font&gt;&lt;/span&gt;&amp;gt;
Tags { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;virtual&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ICollection&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Comment&lt;/font&gt;&lt;/span&gt;&amp;gt;
Comments { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;virtual&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ICollection&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Rating&lt;/font&gt;&lt;/span&gt;&amp;gt;
Ratings { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;virtual&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ICollection&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;Favorite&lt;/font&gt;&lt;/span&gt;&amp;gt;
Favorites { &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Text;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Ingredient&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; ID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; RecipeID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Name
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Description
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Text;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#008000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#008000"&gt; This
is for user based tagging&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#008000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Tag&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; ID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; RecipeID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; UserID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Value
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Text;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Comment&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; ID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; RecipeID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; UserID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Text
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; IPAddress
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Text;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#008000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#008000"&gt; This
is to tag a recipe as a favorite for a user&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#808080"&gt;///&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#008000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Favorite&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; ID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; RecipeID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; UserID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;&lt;/span&gt; DateFavorited
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre style="font-family: "&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;using&lt;/font&gt;&lt;/span&gt; System.Text;&lt;br&gt;
&lt;br&gt;
&lt;span&gt;&lt;font color="#0000ff"&gt;namespace&lt;/font&gt;&lt;/span&gt; KimmysCookbook.Models&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Rating&lt;/font&gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; ID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; RecipeID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;Guid&lt;/font&gt;&lt;/span&gt; UserID
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; Value
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DateTime&lt;/font&gt;&lt;/span&gt; RatingDate
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; IPAddress
{ &lt;span&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;;
}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;
&lt;p&gt;
You’ll notice in the classes that the UserID field is a Guid. In this iteration, we
are going to use the Membership provider that is baked into asp.net. In a future release,
we plan to use OpenID instead. That being said and to keep it simple, we want to have
the membership baked into the database that EF is going to create.&amp;nbsp; Unfortunately,
SQL CE 4 still doesn’t support stored procedures so the current implementation of
membership won’t work with it.&amp;nbsp; According to &lt;a href="http://weblogs.asp.net/scottgu" target="_blank"&gt;ScottGu&lt;/a&gt;’s &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/06/30/new-embedded-database-support-with-asp-net.aspx#7550165" target="_blank"&gt;post&lt;/a&gt;,
they are looking into create a set of providers that will work with it.&amp;nbsp; 
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:57fbb0b1-71aa-45b6-95b6-1765f1ba3f3b" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/asp.net+mvc" rel="tag"&gt;asp.net mvc&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Entity+Framework" rel="tag"&gt;Entity
Framework&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=65be4f57-12f5-47af-9b64-a333423c07b8" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,65be4f57-12f5-47af-9b64-a333423c07b8.aspx</comments>
      <category>.NET</category>
      <category>Entity Framework</category>
      <category>mvc</category>
      <category>SQL Server</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=8feb6600-95c2-4c73-a02a-fc5c426ce834</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,8feb6600-95c2-4c73-a02a-fc5c426ce834.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,8feb6600-95c2-4c73-a02a-fc5c426ce834.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8feb6600-95c2-4c73-a02a-fc5c426ce834</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Years ago I purchased the domain <a href="http://KimmysCookbook.com" target="_blank">KimmysCookbook.com</a> as
a joke.  A friend on facebook had posted a picture of her taking a turkey out
of the oven and a bunch of us started commenting on it and eventually the domain came
to be.  She is a good cook, the joke wasn’t about her cooking, just about making
a cookbook.
</p>
        <p>
Anyway, I never did anything with it really, just posted that picture and let it sit. 
Got to thinking that it would be a cool recipe site and with all the new stuff coming
out of Redmond recently, why not take the time to build it up piece by piece using
these technologies.  
</p>
        <p>
I’ve been toying with the idea for a while, so I’ve already created a database locally
for storage, but since we are looking to use new technologies and also doing it on
the cheap and fast, we’ll use EF4’s code first ability tied with SQL Server CE 4.
</p>
        <p>
Here’s the path I’m looking to take.  Each of these will be a separate iteration
and push to the server.
</p>
        <ol>
          <li>
Quick ASP.net MVC 3 with EF4 code first site</li>
          <li>
Add Silverlight support for ingredient editing</li>
          <li>
Add OData support</li>
          <li>
Silverlight out of browser with touch support</li>
          <li>
            <a href="http://www.microsoft.com/windowsphone/en-us/default.aspx" target="_blank">Windows
Phone 7</a> application</li>
        </ol>
        <p>
As with any project, these items may change as we go along.  Next entry will
outline step 1.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8463b6ed-c494-432b-9134-ec96ade47dd4" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/asp.net+mvc" rel="tag">asp.net mvc</a>,<a href="http://technorati.com/tags/silverlight" rel="tag">silverlight</a>,<a href="http://technorati.com/tags/windows+phone+7" rel="tag">windows
phone 7</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=8feb6600-95c2-4c73-a02a-fc5c426ce834" />
      </body>
      <title>KimmysCookbook.com</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,8feb6600-95c2-4c73-a02a-fc5c426ce834.aspx</guid>
      <link>http://georgehandlin.com/2010/12/27/KimmysCookbookcom.aspx</link>
      <pubDate>Mon, 27 Dec 2010 19:58:51 GMT</pubDate>
      <description>&lt;p&gt;
Years ago I purchased the domain &lt;a href="http://KimmysCookbook.com" target="_blank"&gt;KimmysCookbook.com&lt;/a&gt; as
a joke.&amp;nbsp; A friend on facebook had posted a picture of her taking a turkey out
of the oven and a bunch of us started commenting on it and eventually the domain came
to be.&amp;nbsp; She is a good cook, the joke wasn’t about her cooking, just about making
a cookbook.
&lt;/p&gt;
&lt;p&gt;
Anyway, I never did anything with it really, just posted that picture and let it sit.&amp;nbsp;
Got to thinking that it would be a cool recipe site and with all the new stuff coming
out of Redmond recently, why not take the time to build it up piece by piece using
these technologies.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
I’ve been toying with the idea for a while, so I’ve already created a database locally
for storage, but since we are looking to use new technologies and also doing it on
the cheap and fast, we’ll use EF4’s code first ability tied with SQL Server CE 4.
&lt;/p&gt;
&lt;p&gt;
Here’s the path I’m looking to take.&amp;nbsp; Each of these will be a separate iteration
and push to the server.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Quick ASP.net MVC 3 with EF4 code first site&lt;/li&gt;
&lt;li&gt;
Add Silverlight support for ingredient editing&lt;/li&gt;
&lt;li&gt;
Add OData support&lt;/li&gt;
&lt;li&gt;
Silverlight out of browser with touch support&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/windowsphone/en-us/default.aspx" target="_blank"&gt;Windows
Phone 7&lt;/a&gt; application&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
As with any project, these items may change as we go along.&amp;nbsp; Next entry will
outline step 1.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8463b6ed-c494-432b-9134-ec96ade47dd4" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/asp.net+mvc" rel="tag"&gt;asp.net mvc&lt;/a&gt;,&lt;a href="http://technorati.com/tags/silverlight" rel="tag"&gt;silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/windows+phone+7" rel="tag"&gt;windows
phone 7&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=8feb6600-95c2-4c73-a02a-fc5c426ce834" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,8feb6600-95c2-4c73-a02a-fc5c426ce834.aspx</comments>
      <category>mvc</category>
      <category>Silverlight</category>
      <category>Windows Phone 7</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=e80384bd-a118-44c2-b730-7e0a25346c82</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,e80384bd-a118-44c2-b730-7e0a25346c82.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,e80384bd-a118-44c2-b730-7e0a25346c82.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e80384bd-a118-44c2-b730-7e0a25346c82</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Registering your phone for development requires the use of Windows Phone Developer
Registration tool.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Registering-a-Windows-Phone-7-device-for_14EB8/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Registering-a-Windows-Phone-7-device-for_14EB8/image_thumb.png" width="244" height="220" />
          </a>
        </p>
        <p>
In Windows 7, hit the Windows key (or start button) and type “reg”.  It should
show up as one of the first items in the list.
</p>
        <p>
You will want to have you phone tethered to your machine and unlocked if you use a
PIN.  As it states, you must have an active account developer account for this
to work.
</p>
        <p>
Once the tool is up and your phone is tethered and unlocked, simply enter your Windows
Live ID and password and hit the register button. Simple as that.  If you need
to unregister a phone, just run the utility again with the phone you need to unregister
and the button will change from “Register” to “Unregister”.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7475a94f-0501-41f0-9ddf-b9af57285e53" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/Windows+Phone+7" rel="tag">Windows Phone
7</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=e80384bd-a118-44c2-b730-7e0a25346c82" />
      </body>
      <title>Registering a Windows Phone 7 device for development</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,e80384bd-a118-44c2-b730-7e0a25346c82.aspx</guid>
      <link>http://georgehandlin.com/2010/12/13/RegisteringAWindowsPhone7DeviceForDevelopment.aspx</link>
      <pubDate>Mon, 13 Dec 2010 04:54:23 GMT</pubDate>
      <description>&lt;p&gt;
Registering your phone for development requires the use of Windows Phone Developer
Registration tool.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Registering-a-Windows-Phone-7-device-for_14EB8/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Registering-a-Windows-Phone-7-device-for_14EB8/image_thumb.png" width="244" height="220"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In Windows 7, hit the Windows key (or start button) and type “reg”.&amp;nbsp; It should
show up as one of the first items in the list.
&lt;/p&gt;
&lt;p&gt;
You will want to have you phone tethered to your machine and unlocked if you use a
PIN.&amp;nbsp; As it states, you must have an active account developer account for this
to work.
&lt;/p&gt;
&lt;p&gt;
Once the tool is up and your phone is tethered and unlocked, simply enter your Windows
Live ID and password and hit the register button. Simple as that.&amp;nbsp; If you need
to unregister a phone, just run the utility again with the phone you need to unregister
and the button will change from “Register” to “Unregister”.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7475a94f-0501-41f0-9ddf-b9af57285e53" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/Windows+Phone+7" rel="tag"&gt;Windows Phone
7&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=e80384bd-a118-44c2-b730-7e0a25346c82" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,e80384bd-a118-44c2-b730-7e0a25346c82.aspx</comments>
      <category>Windows Phone 7</category>
    </item>
    <item>
      <trackback:ping>http://georgehandlin.com/Trackback.aspx?guid=bb475fac-e7d6-4c94-989f-57ae98cac2dd</trackback:ping>
      <pingback:server>http://georgehandlin.com/pingback.aspx</pingback:server>
      <pingback:target>http://georgehandlin.com/PermaLink,guid,bb475fac-e7d6-4c94-989f-57ae98cac2dd.aspx</pingback:target>
      <dc:creator>George Handlin</dc:creator>
      <wfw:comment>http://georgehandlin.com/CommentView,guid,bb475fac-e7d6-4c94-989f-57ae98cac2dd.aspx</wfw:comment>
      <wfw:commentRss>http://georgehandlin.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bb475fac-e7d6-4c94-989f-57ae98cac2dd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently a friend of mine asked me about digital frames and specifically about the <a href="http://www.amazon.com/gp/product/B002IVVD9Q?ie=UTF8&amp;tag=hhcs&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B002IVVD9Q" target="_blank">Toshiba
DMF102XKU</a>. I hadn’t heard of it, but have had my fair share of digital frames
– none of which have really had all that I wanted in a frame.  I want one that
can get online wirelessly via at least 802.11g with WPA for security. I read through
the specs on Amazon and it sounded good, so I ordered three.  I wanted a couple
for gifts as well.
</p>
        <p>
Opening the box shows the remote and the instructions.  One thing to note, the
instructions are just a quick start guide.  The little booklet says to get the
full owners manual you have to download it.  The link unfortunately does not
go to the owner’s manual and doing a search on the site doesn’t turn it up either. 
That’s one strike against it.  I’ve emailed them about sending it out. 
Will update this post with whatever response I get.  Along with the quick start
guide an “important information” guide.  This is only in English, so if you don’t
speak English you are out of luck.  Of course if you don’t read English, you
probably aren’t reading this anyway.
</p>
        <p>
Another issue is the stickers on the frame – they were a bit difficult to get off
and left a bit of residue behind. 
</p>
        <p align="center">
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5163.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5163" border="0" alt="IMG_5163" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5163_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5166.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5166" border="0" alt="IMG_5166" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5166_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5167.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5167" border="0" alt="IMG_5167" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5167_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
The frame can either be mounted on a wall or use the stand.  The frame feels
good, sturdy and well built.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5187.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="IMG_5187" border="0" alt="IMG_5187" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5187_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
When you first turn it on, it runs through a demo slideshow which shows the capabilities
of the frame and some sample pictures.  The resolution is 800x480 and it has
a tilt sensor to detect if it’s in landscape or portrait mode.  That’s nice.
</p>
        <p>
So, the device is powered up and going through the demo.  Grab the remote to
start working with it.  Remote doesn’t work.  Hmmm.  Grab one from
another unit. Still no go.  So perhaps the unit is bad.  Looks like I’ll
need to get in touch with customer support.
</p>
        <p>
Thankfully the unit has a control built into the frame that lights up when you touch
it.
</p>
        <p align="center">
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5188.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5188" border="0" alt="IMG_5188" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5188_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5189.jpg">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5189" border="0" alt="IMG_5189" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5189_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
So, let’s get this thing online.  That couldn’t be simpler if you have a modern
router.  Just hit the WPS button on the router and the frame and it will do the
rest for you.
</p>
        <p>
Getting setup with online stuff is a little confusing.  In the image on the left
above, there is an option for “Online Service Settings”.  It would make sense
that this would be where you set up all your online stuff.  However, the only
thing you can do there is setup 3 different Picasa accounts.  What you need to
do is click Mode either on the remote (mine doesn’t work) or on the frame itself. 
From there you click on FrameChannel and it will prompt you to activate your frame
giving you an access code and a website to enter it into.  If you don’t already
have a FrameChannel account, you can create one and the choose the services that will
come down Here is a sampling of what can be done on FrameChannel.
</p>
        <p>
          <a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/image_2.png">
            <img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/image_thumb.png" width="244" height="199" />
          </a>
        </p>
        <p>
I have set my facebook account up to feed into it, and within just a couple minutes
the pictures started coming in from the facebook friends I selected to have feed it. 
The “My Friends Photos” tab allows you to invite people to email or MMS photos to
the frame.
</p>
        <p>
There are a couple ads for FrameChannel that cycle through.  I need to figure
out how to get rid of that.
</p>
        <p>
You can also add things like Digg, Twitter, Facebook status messages and more to the
frame.  I have added local events so when something is available in my area,
it will show it to me.
</p>
        <p>
Overall I’m pleased with the device. I hope I can get the couple issues I have worked
out. Honestly, I’ll probably never use the remote, but I I want to have it available.
</p>
        <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:772a4365-3217-47d4-be17-3e8df5ea1644" class="wlWriterEditableSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/Toshiba+Digital+Media+Frame" rel="tag">Toshiba
Digital Media Frame</a></div>
        <img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=bb475fac-e7d6-4c94-989f-57ae98cac2dd" />
      </body>
      <title>Toshiba 10” Digital Media Frame</title>
      <guid isPermaLink="false">http://georgehandlin.com/PermaLink,guid,bb475fac-e7d6-4c94-989f-57ae98cac2dd.aspx</guid>
      <link>http://georgehandlin.com/2010/12/11/Toshiba10DigitalMediaFrame.aspx</link>
      <pubDate>Sat, 11 Dec 2010 05:18:42 GMT</pubDate>
      <description>&lt;p&gt;
Recently a friend of mine asked me about digital frames and specifically about the &lt;a href="http://www.amazon.com/gp/product/B002IVVD9Q?ie=UTF8&amp;amp;tag=hhcs&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B002IVVD9Q" target="_blank"&gt;Toshiba
DMF102XKU&lt;/a&gt;. I hadn’t heard of it, but have had my fair share of digital frames
– none of which have really had all that I wanted in a frame.&amp;nbsp; I want one that
can get online wirelessly via at least 802.11g with WPA for security. I read through
the specs on Amazon and it sounded good, so I ordered three.&amp;nbsp; I wanted a couple
for gifts as well.
&lt;/p&gt;
&lt;p&gt;
Opening the box shows the remote and the instructions.&amp;nbsp; One thing to note, the
instructions are just a quick start guide.&amp;nbsp; The little booklet says to get the
full owners manual you have to download it.&amp;nbsp; The link unfortunately does not
go to the owner’s manual and doing a search on the site doesn’t turn it up either.&amp;nbsp;
That’s one strike against it.&amp;nbsp; I’ve emailed them about sending it out.&amp;nbsp;
Will update this post with whatever response I get.&amp;nbsp; Along with the quick start
guide an “important information” guide.&amp;nbsp; This is only in English, so if you don’t
speak English you are out of luck.&amp;nbsp; Of course if you don’t read English, you
probably aren’t reading this anyway.
&lt;/p&gt;
&lt;p&gt;
Another issue is the stickers on the frame – they were a bit difficult to get off
and left a bit of residue behind. 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5163.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5163" border="0" alt="IMG_5163" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5163_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5166.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5166" border="0" alt="IMG_5166" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5166_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5167.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5167" border="0" alt="IMG_5167" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5167_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The frame can either be mounted on a wall or use the stand.&amp;nbsp; The frame feels
good, sturdy and well built.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5187.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="IMG_5187" border="0" alt="IMG_5187" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5187_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
When you first turn it on, it runs through a demo slideshow which shows the capabilities
of the frame and some sample pictures.&amp;nbsp; The resolution is 800x480 and it has
a tilt sensor to detect if it’s in landscape or portrait mode.&amp;nbsp; That’s nice.
&lt;/p&gt;
&lt;p&gt;
So, the device is powered up and going through the demo.&amp;nbsp; Grab the remote to
start working with it.&amp;nbsp; Remote doesn’t work.&amp;nbsp; Hmmm.&amp;nbsp; Grab one from
another unit. Still no go.&amp;nbsp; So perhaps the unit is bad.&amp;nbsp; Looks like I’ll
need to get in touch with customer support.
&lt;/p&gt;
&lt;p&gt;
Thankfully the unit has a control built into the frame that lights up when you touch
it.
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5188.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5188" border="0" alt="IMG_5188" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5188_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5189.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="IMG_5189" border="0" alt="IMG_5189" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/IMG_5189_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
So, let’s get this thing online.&amp;nbsp; That couldn’t be simpler if you have a modern
router.&amp;nbsp; Just hit the WPS button on the router and the frame and it will do the
rest for you.
&lt;/p&gt;
&lt;p&gt;
Getting setup with online stuff is a little confusing.&amp;nbsp; In the image on the left
above, there is an option for “Online Service Settings”.&amp;nbsp; It would make sense
that this would be where you set up all your online stuff.&amp;nbsp; However, the only
thing you can do there is setup 3 different Picasa accounts.&amp;nbsp; What you need to
do is click Mode either on the remote (mine doesn’t work) or on the frame itself.&amp;nbsp;
From there you click on FrameChannel and it will prompt you to activate your frame
giving you an access code and a website to enter it into.&amp;nbsp; If you don’t already
have a FrameChannel account, you can create one and the choose the services that will
come down Here is a sampling of what can be done on FrameChannel.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://georgehandlin.com/content/binary/Windows-Live-Writer/Toshiba-10-Digital-Media-Frame_AD99/image_thumb.png" width="244" height="199"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I have set my facebook account up to feed into it, and within just a couple minutes
the pictures started coming in from the facebook friends I selected to have feed it.&amp;nbsp;
The “My Friends Photos” tab allows you to invite people to email or MMS photos to
the frame.
&lt;/p&gt;
&lt;p&gt;
There are a couple ads for FrameChannel that cycle through.&amp;nbsp; I need to figure
out how to get rid of that.
&lt;/p&gt;
&lt;p&gt;
You can also add things like Digg, Twitter, Facebook status messages and more to the
frame.&amp;nbsp; I have added local events so when something is available in my area,
it will show it to me.
&lt;/p&gt;
&lt;p&gt;
Overall I’m pleased with the device. I hope I can get the couple issues I have worked
out. Honestly, I’ll probably never use the remote, but I I want to have it available.
&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:772a4365-3217-47d4-be17-3e8df5ea1644" class="wlWriterEditableSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/Toshiba+Digital+Media+Frame" rel="tag"&gt;Toshiba
Digital Media Frame&lt;/a&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://georgehandlin.com/aggbug.ashx?id=bb475fac-e7d6-4c94-989f-57ae98cac2dd" /&gt;</description>
      <comments>http://georgehandlin.com/CommentView,guid,bb475fac-e7d6-4c94-989f-57ae98cac2dd.aspx</comments>
      <category>Review</category>
    </item>
  </channel>
</rss>
