<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>mvk @ RedLeaf</title>
	<atom:link href="http://mvkatredleaf.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mvkatredleaf.wordpress.com</link>
	<description>Anything and Everything about Programming</description>
	<lastBuildDate>Thu, 16 Apr 2009 06:19:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mvkatredleaf.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>mvk @ RedLeaf</title>
		<link>http://mvkatredleaf.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mvkatredleaf.wordpress.com/osd.xml" title="mvk @ RedLeaf" />
	<atom:link rel='hub' href='http://mvkatredleaf.wordpress.com/?pushpress=hub'/>
		<item>
		<title>LINQ to SQL Basics – Part 5 (Extension Methods)</title>
		<link>http://mvkatredleaf.wordpress.com/2009/04/16/linqtosqlbasicspart5/</link>
		<comments>http://mvkatredleaf.wordpress.com/2009/04/16/linqtosqlbasicspart5/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 06:06:05 +0000</pubDate>
		<dc:creator>mvkredleaf</dc:creator>
				<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Extension Methods]]></category>

		<guid isPermaLink="false">http://mvkatredleaf.wordpress.com/?p=69</guid>
		<description><![CDATA[If you try to use an extension method within LINQ to SQL you will run across this error: This is exactly what happened to me. Let me take you through the steps of what I did and how I resolved it. Say you have the below mentioned LINQ query. You want to print out all [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=69&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you try to use an extension method within LINQ to SQL you will run across this error:</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba12.png?w=470" alt="" /></p>
<p>This is exactly what happened to me. Let me take you through the steps of what I did and how I resolved it.</p>
<p>Say you have the below mentioned LINQ query.</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba22.png?w=470" alt="" /></p>
<p>You want to print out all the Customer names, but the all names in the database has different casing. A problem we developers usually have. So what you want to do is to display it in proper case. We would want to re-use this functionality in other places to. So the first thing that comes to mind is to create an extension method. Something that allows us to say String.ToTitleCase() as shown below.</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba32.png?w=470" alt="" /></p>
<p>So let us get to work. I added a new class file to my solution called extensions.cs with the following code:</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba42.png?w=470" alt="" /></p>
<p>This method will now allow me to use this with any string. See below example:</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba52.png?w=470" alt="" /></p>
<p>Now let&#8217;s use this new functionality within our LINQ query:</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba62.png?w=470" alt="" /></p>
<p>When we run our application now we get the following error:</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba72.png?w=470" alt="" /></p>
<p>That doesn&#8217;t seem to work. The reason for this now working is <span style="color:#0d0d0d;">because LINQ to</span><span style="color:#0d0d0d;"> SQL doesn&#8217;t know how to translate the method &#8220;ToTitleCase()&#8221; into SQL code. It sees it as part of the LINQ expression.</span><span style="color:#0d0d0d;"> To get around this we need to create a partial method on our Customers data entity. All our LINQ to SQL entities consists out of partial classes. So we can implement another partial class on our existing classes to extend our functionality. There is different ways of implementing these classes by making use of different events in these classes, but I will just focus on a simple solution for now. So what you need to do is to add another class file to your project. We are going to extend the functionality of your existing LINQ to SQL entities. We don&#8217;t want our changes to be overwritten when we regenerate our data context. I added a new class file called Northwind_Extend.cs. I want to create a partial class of the Customer class. So i am going to create it exactly as it is within my data context using exactly the same interfaces:</span></p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba82.png?w=470" alt="" /></p>
<p><span style="color:#0d0d0d;">What I am going to do now is to create a new property for CompanyName called CompanyNameProper. The reason why I have done this is because I don&#8217;t want to update my DB with the data formatted proper case. So this is what I have done next:</span></p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba92.png?w=470" alt="" /></p>
<p><span style="color:#0d0d0d;">We also need to change our LINQ query to make use of the new property:</span></p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba102.png?w=470" alt="" /></p>
<p><span style="color:#0d0d0d;">So when we run our application now, it works as it should!</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mvkatredleaf.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mvkatredleaf.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mvkatredleaf.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mvkatredleaf.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mvkatredleaf.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mvkatredleaf.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mvkatredleaf.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mvkatredleaf.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=69&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mvkatredleaf.wordpress.com/2009/04/16/linqtosqlbasicspart5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/203d86ad0b48993231397bd8d1f73478?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">mvkredleaf</media:title>
		</media:content>

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba12.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba22.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba32.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba42.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba52.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba62.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba72.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba82.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba92.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/041609-0553-linqtosqlba102.png" medium="image" />
	</item>
		<item>
		<title>LINQ to SQL Basics – Part 4 (Lambda Expressions)</title>
		<link>http://mvkatredleaf.wordpress.com/2009/04/14/linq-to-sql-basics-%e2%80%93-part-4-lambda-expressions/</link>
		<comments>http://mvkatredleaf.wordpress.com/2009/04/14/linq-to-sql-basics-%e2%80%93-part-4-lambda-expressions/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 06:23:57 +0000</pubDate>
		<dc:creator>mvkredleaf</dc:creator>
				<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Lambda Expressions]]></category>

		<guid isPermaLink="false">http://mvkatredleaf.wordpress.com/?p=31</guid>
		<description><![CDATA[Today I will be showing a few short examples of using Lambda expressions. Lambda expressions is nothing new, it also exists in other languages and been used for quite a while. Lambda expressions are based on Lambda Calculus. You can do some research on Lambda Calculus on Wikipedia (www.wikipedia.org). I recommend reading Chapter 5 (Understanding [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=31&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I will be showing a few short examples of using Lambda expressions. Lambda expressions is nothing new, it also exists in other languages and been used for quite a while. Lambda expressions are based on Lambda Calculus. You can do some research on Lambda Calculus on Wikipedia (<a href="http://www.wikipedia.org">www.wikipedia.org</a>). I recommend reading Chapter 5 (Understanding Lambda Expressions and Closures) of SAMS LINQ Unleashed for C# by Paul Kimmel.
</p>
<p>By using Lambda expressions we can write our LINQ queries more compact. We all love less code, don&#8217;t we?
</p>
<p>Look at the following simple select:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> q = <span style="color:blue;">from</span> ct <span style="color:blue;">in</span> db.Customers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">select</span> ct;<br />
</span></p>
<p>can be written using a Lambda expression as follow:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> q = db.Customers.Select(ct =&gt; ct);<br />
</span></p>
<p>The same SQL query is constructed for both of the selects. Now let&#8217;s build the query up a bit. We adding a &#8216;Where&#8217; to the select statement. This is how it will look now:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> q = <span style="color:blue;">from</span> ct <span style="color:blue;">in</span> db.Customers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">where</span> ct.CustomerID == <span style="color:#a31515;">&#8220;ALFKI&#8221;<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">select</span> ct;<br />
</span></p>
<p>This is how the Lambda expression will look like:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> q = db.Customers.Where(ct =&gt; (ct.CustomerID == <span style="color:#a31515;">&#8220;ALFKI&#8221;</span>));<br />
</span></p>
<p>Lambda expressions can get quite complicated the more complex your query gets. Let&#8217;s look at the next query. Here we are selecting all the orders for CustomerID = &#8220;ALFKI&#8221;:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> f = <span style="color:blue;">from</span> ct <span style="color:blue;">in</span> db.Customers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">join</span> o <span style="color:blue;">in</span> db.Orders<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">on</span> ct.CustomerID <span style="color:blue;">equals</span> o.CustomerID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">where</span> ct.CustomerID == <span style="color:#a31515;">&#8220;ALFKI&#8221;<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">select</span> o;</span>
	</p>
<p>Now writing this as a Lambda expression gets more involved:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> g = db.Customers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">          .Where(ct =&gt; ct.CustomerID == <span style="color:#a31515;">&#8220;ALFKI&#8221;</span>)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">          .Join(db.Orders, ct =&gt; ct.CustomerID, o =&gt; o.CustomerID, (ct, o) =&gt; o);</span>
	</p>
<p>Using Lambda Expressions does take some time to understand and grow on you.
</p>
<p>
 </p>
<p>
 </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mvkatredleaf.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mvkatredleaf.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mvkatredleaf.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mvkatredleaf.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mvkatredleaf.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mvkatredleaf.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mvkatredleaf.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mvkatredleaf.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=31&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mvkatredleaf.wordpress.com/2009/04/14/linq-to-sql-basics-%e2%80%93-part-4-lambda-expressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/203d86ad0b48993231397bd8d1f73478?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">mvkredleaf</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ to SQL Basics – Part 3 (Select with “lazy loading”)</title>
		<link>http://mvkatredleaf.wordpress.com/2009/04/08/linqtosqlbasicspart3/</link>
		<comments>http://mvkatredleaf.wordpress.com/2009/04/08/linqtosqlbasicspart3/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 12:02:19 +0000</pubDate>
		<dc:creator>mvkredleaf</dc:creator>
				<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Lazy Loading]]></category>

		<guid isPermaLink="false">http://mvkatredleaf.wordpress.com/?p=28</guid>
		<description><![CDATA[I will be using the Northwind database in this example. Say you get the following requirements: Show me all the Customers which ordered more than 5 items of Tofu between &#8217;1998-03-06&#8242; and &#8217;1998-06-06&#8242;, and the Supplier which supplied the product. Decoding the above requirements we will see that we need data from quite a few [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=28&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I will be using the Northwind database in this example.</p>
<p>Say you get the following requirements:</p>
<p>Show me all the Customers which ordered more than 5 items of Tofu between &#8217;1998-03-06&#8242; and &#8217;1998-06-06&#8242;, and the Supplier which supplied the product.</p>
<p>Decoding the above requirements we will see that we need data from quite a few statements. So let&#8217;s see how the SQL select statement would look like for this:</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">select</span> distinct ct<span style="color:gray;">.</span>CompanyName CustomerName<span style="color:gray;">,</span> s<span style="color:gray;">.</span>CompanyName SupplierName<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;"> from</span> [Order Details] od<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:gray;"> inner</span><br />
<span style="color:gray;">join</span> Orders o<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;"> on</span> o<span style="color:gray;">.</span>OrderID <span style="color:gray;">=</span> od<span style="color:gray;">.</span>OrderID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:gray;"> inner</span><br />
<span style="color:gray;">join</span> Products p<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;"> on</span> od<span style="color:gray;">.</span>ProductID <span style="color:gray;">=</span> p<span style="color:gray;">.</span>ProductID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:gray;"> inner</span><br />
<span style="color:gray;">join</span> Suppliers s<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;"> on</span> p<span style="color:gray;">.</span>SupplierID <span style="color:gray;">=</span> s<span style="color:gray;">.</span>SupplierID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:gray;"> inner</span><br />
<span style="color:gray;">join</span> Customers ct<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;"> on</span> ct<span style="color:gray;">.</span>CustomerID <span style="color:gray;">=</span> o<span style="color:gray;">.</span>CustomerID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;"> where</span> o<span style="color:gray;">.</span>OrderDate <span style="color:gray;">between</span><br />
<span style="color:red;">&#8217;1998-03-06&#8242;</span><br />
<span style="color:gray;">and</span><br />
<span style="color:red;">&#8217;1998-06-06&#8242;<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:gray;"> and</span> p<span style="color:gray;">.</span>[ProductName] <span style="color:gray;">=</span><br />
<span style="color:red;">&#8216;Tofu&#8217;<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:gray;"> and</span> od<span style="color:gray;">.</span>Quantity <span style="color:gray;">&gt;</span> 5</span></p>
<p>Quite a long and lumpy join&#8230; Something called &#8220;lazy loading&#8221; in LINQ make this big lumpy select a little bit simpler. You have instant access to the data that is joined to a specific table. Let&#8217;s have a look at how we could do this in LINQ.</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> q = (<span style="color:blue;">from</span> od <span style="color:blue;">in</span> nw.Order_Details<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">where</span> od.Order.OrderDate &gt; <span style="color:#2b91af;">DateTime</span>.Parse(<span style="color:#a31515;">&#8220;1998-03-06&#8243;</span>)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> &amp;&amp; od.Order.OrderDate &lt; <span style="color:#2b91af;">DateTime</span>.Parse(<span style="color:#a31515;">&#8220;1998-06-06&#8243;</span>)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> &amp;&amp; od.Product.ProductName == <span style="color:#a31515;">&#8220;Tofu&#8221;<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> &amp;&amp; od.Quantity &gt; 5<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">select</span><br />
<span style="color:blue;">new<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> {<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> CustomerName = od.Order.Customer.CompanyName,<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> SupplierName = od.Product.Supplier.CompanyName<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> }).Distinct();</span></p>
<p>As you can see we aren&#8217;t joining Order_Details up with any other tables. Let&#8217;s have a closer look using SQL profiler to see the actual SQL created:</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">exec</span><br />
<span style="color:maroon;">sp_executesql</span><span style="color:blue;"><br />
</span><span style="color:red;">N&#8217;SELECT DISTINCT [t3].[CompanyName] AS [CustomerName], [t4].[CompanyName] AS [SupplierName]<br />
</span></span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">FROM [dbo].[Order Details] AS [t0]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">INNER JOIN [dbo].[Orders] AS [t1] ON [t1].[OrderID] = [t0].[OrderID]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">INNER JOIN [dbo].[Products] AS [t2] ON [t2].[ProductID] = [t0].[ProductID]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">LEFT OUTER JOIN [dbo].[Customers] AS [t3] ON [t3].[CustomerID] = [t1].[CustomerID]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">LEFT OUTER JOIN [dbo].[Suppliers] AS [t4] ON [t4].[SupplierID] = [t2].[SupplierID]<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:red;">WHERE ([t1].[OrderDate] &gt; @p0) AND ([t1].[OrderDate] &lt; @p1) AND ([t2].[ProductName] = @p2) AND ([t0].[Quantity] &gt; @p3)&#8217;</span><span style="color:gray;">,</span><span style="color:red;">N&#8217;@p0 datetime,@p1 datetime,@p2 nvarchar(4),@p3 int&#8217;</span><span style="color:gray;">,</span>@p0<span style="color:gray;">=</span><span style="color:red;">&#8217;1998-03-06 00:00:00&#8242;</span><span style="color:gray;">,</span>@p1<span style="color:gray;">=</span><span style="color:red;">&#8217;1998-06-06 00:00:00&#8242;</span><span style="color:gray;">,</span>@p2<span style="color:gray;">=</span><span style="color:red;">N&#8217;Tofu&#8217;</span><span style="color:gray;">,</span>@p3<span style="color:gray;">=</span>5</span></p>
<p>Mmmmm&#8230;. Two outer joins&#8230;. Not what we wanted. Lets us try to change our LINQ query that it doesn&#8217;t produce the outer joins. To get past the outer joins we will have to remove some of the &#8220;lazy loading&#8221;. So the LINQ query will look as follow:</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">var</span> q = (<span style="color:blue;">from</span> od <span style="color:blue;">in</span> nw.Order_Details<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">where</span> od.Quantity &gt; 5<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> &amp;&amp; od.Order.OrderDate &gt; <span style="color:#2b91af;">DateTime</span>.Parse(<span style="color:#a31515;">&#8220;1998-03-06&#8243;</span>)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> &amp;&amp; od.Order.OrderDate &lt; <span style="color:#2b91af;">DateTime</span>.Parse(<span style="color:#a31515;">&#8220;1998-06-06&#8243;</span>)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> &amp;&amp; od.Product.ProductName == <span style="color:#a31515;">&#8220;Tofu&#8221;<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">join</span> ct <span style="color:blue;">in</span> nw.Customers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">on</span> od.Order.CustomerID <span style="color:blue;">equals</span> ct.CustomerID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">join</span> sp <span style="color:blue;">in</span> nw.Suppliers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">on</span> od.Product.SupplierID <span style="color:blue;">equals</span> sp.SupplierID<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
<span style="color:blue;">select</span><br />
<span style="color:blue;">new<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> {<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> CustomerName = ct.CompanyName,<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> SupplierName = sp.CompanyName<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"> }).Distinct();</span></p>
<p>We still using some of the lazy loading but just joining to Customers and Suppliers to get rid of the outer joins. The SQL query now looks as follow:</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">exec</span><br />
<span style="color:maroon;">sp_executesql</span><span style="color:blue;"><br />
</span><span style="color:red;">N&#8217;SELECT DISTINCT [t3].[CompanyName] AS [CustomerName], [t4].[CompanyName] AS [SupplierName]<br />
</span></span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">FROM [dbo].[Order Details] AS [t0]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">INNER JOIN [dbo].[Orders] AS [t1] ON [t1].[OrderID] = [t0].[OrderID]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">INNER JOIN [dbo].[Products] AS [t2] ON [t2].[ProductID] = [t0].[ProductID]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">INNER JOIN [dbo].[Customers] AS [t3] ON [t1].[CustomerID] = [t3].[CustomerID]<br />
</span></p>
<p><span style="color:red;font-family:Courier New;font-size:10pt;">INNER JOIN [dbo].[Suppliers] AS [t4] ON [t2].[SupplierID] = ([t4].[SupplierID])<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:red;">WHERE ([t0].[Quantity] &gt; @p0) AND ([t1].[OrderDate] &gt; @p1) AND ([t1].[OrderDate] &lt; @p2) AND ([t2].[ProductName] = @p3)&#8217;</span><span style="color:gray;">,</span><span style="color:red;">N&#8217;@p0 int,@p1 datetime,@p2 datetime,@p3 nvarchar(4)&#8217;</span><span style="color:gray;">,</span>@p0<span style="color:gray;">=</span>5<span style="color:gray;">,</span>@p1<span style="color:gray;">=</span><span style="color:red;">&#8217;1998-03-06 00:00:00&#8242;</span><span style="color:gray;">,</span>@p2<span style="color:gray;">=</span><span style="color:red;">&#8217;1998-06-06 00:00:00&#8242;</span><span style="color:gray;">,</span>@p3<span style="color:gray;">=</span><span style="color:red;">N&#8217;Tofu&#8217;</span></span></p>
<p>Just what we want! I recommend that you always use SQL profiler to inspect your queries and make sure that your SQL select statement looks the way that it should!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mvkatredleaf.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mvkatredleaf.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mvkatredleaf.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mvkatredleaf.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mvkatredleaf.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mvkatredleaf.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mvkatredleaf.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mvkatredleaf.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=28&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mvkatredleaf.wordpress.com/2009/04/08/linqtosqlbasicspart3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/203d86ad0b48993231397bd8d1f73478?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">mvkredleaf</media:title>
		</media:content>
	</item>
		<item>
		<title>LINQ to SQL Basics – Part 2 (Creating LINQ to SQL Classes)</title>
		<link>http://mvkatredleaf.wordpress.com/2009/04/06/linqtosqlbasicspart2/</link>
		<comments>http://mvkatredleaf.wordpress.com/2009/04/06/linqtosqlbasicspart2/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 05:22:53 +0000</pubDate>
		<dc:creator>mvkredleaf</dc:creator>
				<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://mvkatredleaf.wordpress.com/?p=22</guid>
		<description><![CDATA[I will show you how to create LINQ to SQL data classes within your existing project. I will be using Northwind within my example. Right click on your project, Add, New Item&#8230;   Under Visual C# Items, select Data. Under Templates select LINQ to SQL Classes and enter your name for your data context and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=22&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I will show you how to create LINQ to SQL data classes within your existing project. I will be using Northwind within my example.
</p>
<p>Right click on your project, Add, New Item&#8230;
</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba1.png?w=470">
	</p>
<p>
 </p>
<p>Under Visual C# Items, select Data. Under Templates select LINQ to SQL Classes and enter your name for your data context and click Add.
</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba2.png?w=470">
	</p>
<p>
 </p>
<p>Click Server Explorer inside the Northwind.dbml file
</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba3.png?w=470">
	</p>
<p>In the server explorer tab click the connect to database icon.
</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba4.png?w=470">
	</p>
<p>
 </p>
<p>Setup your database connection and click ok.
</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba5.png?w=470">
	</p>
<p>
 </p>
<p>Now you will be able to add all your tables and stored procedures to your data context. Highlight the tables that you want to add and drag them on your data context. Do the same with the stored procedures.
</p>
<p><img src="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba6.png?w=470">
	</p>
<p>
 </p>
<p>Now we will be able to write LINQ queries&#8230;
</p>
<p>Add the following using statement on the page where you going to use your LINQ query:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">using</span> System.Linq;</span>
	</p>
<p>I used the following code to test the LINQ functionality in a console app:
</p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">using</span> System;<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">using</span> System.Linq;<br />
</span></p>
<p>
 </p>
<p><span style="font-family:Courier New;font-size:10pt;"><span style="color:blue;">namespace</span> LINQtoSQLPart2<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">{<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">class</span><br />
			<span style="color:#2b91af;">Program<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:10pt;">    {<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">static</span><br />
			<span style="color:blue;">void</span> Main(<span style="color:blue;">string</span>[] args)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">        {<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:#2b91af;">NorthwindDataContext</span> db = <span style="color:blue;">new</span><br />
			<span style="color:#2b91af;">NorthwindDataContext</span>();<br />
</span></p>
<p>
 </p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">var</span> q = <span style="color:blue;">from</span> c <span style="color:blue;">in</span> db.Customers<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">select</span> c;<br />
</span></p>
<p>
 </p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:blue;">foreach</span> (<span style="color:blue;">var</span> row <span style="color:blue;">in</span> q)<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">            {<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:#2b91af;">Console</span>.WriteLine(<span style="color:#a31515;">&#8220;Customer: {0}&#8221;</span>, row.CompanyName);<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">            }<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;"><br />
			<span style="color:#2b91af;">Console</span>.ReadLine();<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">        }<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">    }<br />
</span></p>
<p><span style="font-family:Courier New;font-size:10pt;">}<br />
</span></p>
<p>That&#8217;s all to it&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mvkatredleaf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mvkatredleaf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mvkatredleaf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mvkatredleaf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mvkatredleaf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mvkatredleaf.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mvkatredleaf.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mvkatredleaf.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=22&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mvkatredleaf.wordpress.com/2009/04/06/linqtosqlbasicspart2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/203d86ad0b48993231397bd8d1f73478?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">mvkredleaf</media:title>
		</media:content>

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba1.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba2.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba3.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba4.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba5.png" medium="image" />

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/040609-0522-linqtosqlba6.png" medium="image" />
	</item>
		<item>
		<title>LINQ to SQL Basics – Part 1 (Bug?)</title>
		<link>http://mvkatredleaf.wordpress.com/2009/04/03/linqtosqlbasicspart1/</link>
		<comments>http://mvkatredleaf.wordpress.com/2009/04/03/linqtosqlbasicspart1/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 05:19:56 +0000</pubDate>
		<dc:creator>mvkredleaf</dc:creator>
				<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://mvkatredleaf.wordpress.com/?p=10</guid>
		<description><![CDATA[I have recently made the jump into LINQ and experienced allot of hours of headaches and pains but working through them. Few things that use to be a drag just seem so much easier now. But more of that in later posts. Let me start off with the basics. The example in this post is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=10&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have recently made the jump into LINQ and experienced allot of hours of headaches and pains but working through them. Few things that use to be a drag just seem so much easier now. But more of that in later posts. Let me start off with the basics.</p>
<p>The example in this post is using the Northwind database and executed using <a href="http://www.linqpad.net">LINQPad</a></p>
<p>Simple things don&#8217;t seem so simple anymore using LINQ (hmmm didn&#8217;t I just say LINQ makes things easier?).</p>
<p>Let&#8217;s consider the following LINQ statement:</p>
<h6><span style="font-size:12pt;">Customers ct = <span style="color:blue;">new</span> Customers { CustomerID = <span style="color:#dc1414;">&#8220;AAAAA&#8221;</span>, CompanyName = <span style="color:#dc1414;">&#8220;Aaaaaa&#8221;</span> };<br />
Customers.InsertOnSubmit(ct);<br />
SubmitChanges();</span></h6>
<p>Straight forward, we create a new customer with CustomerID = &#8220;AAAAA&#8221; and CompanyName = &#8220;Aaaaa&#8221;. Set so that when we submit the changes that the customer is inserted. Then submit the query to the database. The following SQL is created to do the insert:</p>
<p><span style="font-family:Verdana;font-size:9pt;"><span style="color:blue;">INSERT</span><span style="color:black;"><br />
</span><span style="color:blue;">INTO</span><span style="color:black;"><br />
</span><span style="color:#dc1414;">[Customers]</span><span style="color:black;">(</span><span style="color:#dc1414;">[CustomerID]</span><span style="color:black;">, </span><span style="color:#dc1414;">[CompanyName]</span><span style="color:black;">, </span><span style="color:#dc1414;">[ContactName]</span><span style="color:black;">, </span><span style="color:#dc1414;">[ContactTitle]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Address]</span><span style="color:black;">, </span><span style="color:#dc1414;">[City]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Region]</span><span style="color:black;">, </span><span style="color:#dc1414;">[PostalCode]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Country]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Phone]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Fax]</span><span style="color:black;">)<br />
</span></span></p>
<p><span style="font-family:Verdana;font-size:9pt;"><span style="color:blue;">VALUES</span><span style="color:black;"> (</span><span style="color:#2b91af;">@p0</span><span style="color:black;">, </span><span style="color:#2b91af;">@p1</span><span style="color:black;">, </span><span style="color:#2b91af;">@p2</span><span style="color:black;">, </span><span style="color:#2b91af;">@p3</span><span style="color:black;">, </span><span style="color:#2b91af;">@p4</span><span style="color:black;">, </span><span style="color:#2b91af;">@p5</span><span style="color:black;">, </span><span style="color:#2b91af;">@p6</span><span style="color:black;">, </span><span style="color:#2b91af;">@p7</span><span style="color:black;">, </span><span style="color:#2b91af;">@p8</span><span style="color:black;">, </span><span style="color:#2b91af;">@p9</span><span style="color:black;">, </span><span style="color:#2b91af;">@p10</span><span style="color:black;">)<br />
</span></span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [AAAAA]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p1: Input NVarChar (Size = 6; Prec = 0; Scale = 0) [Aaaaaa]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p2: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p3: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p4: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p5: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p6: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p7: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p8: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p9: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p10: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]</span><span style="font-size:10pt;"><br />
</span></p>
<p>Not too shabby you might think. Now let&#8217;s complicate things a bit. Run the following script on your database:</p>
<p><span style="font-family:Courier New;font-size:9pt;"><span style="color:blue;">ALTER</span><br />
<span style="color:blue;">TABLE</span> dbo<span style="color:gray;">.</span>Customers <span style="color:blue;">ADD<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:9pt;"> CreateDate <span style="color:blue;">datetime</span><br />
<span style="color:gray;">NOT</span><br />
<span style="color:gray;">NULL</span><br />
<span style="color:blue;">CONSTRAINT</span> DF_Customers_CreateDate <span style="color:blue;">DEFAULT</span><br />
<span style="color:fuchsia;">getdate</span><span style="color:gray;">()<br />
</span></span></p>
<p><span style="color:blue;font-family:Courier New;font-size:9pt;">GO<br />
</span></p>
<p><span style="font-family:Courier New;font-size:9pt;"><span style="color:blue;">ALTER</span><br />
<span style="color:blue;">TABLE</span> dbo<span style="color:gray;">.</span>Customers <span style="color:blue;">SET </span><span style="color:gray;">(</span><span style="color:blue;">LOCK_ESCALATION</span><br />
<span style="color:gray;">=</span><br />
<span style="color:blue;">TABLE</span><span style="color:gray;">)<br />
</span></span></p>
<p><span style="color:blue;font-family:Courier New;font-size:9pt;">GO<br />
</span></p>
<p>This script creates a new column on the Customers table called CreateDate with a default of getdate.</p>
<p>Ok, now run the below insert script on your SQL database:</p>
<p><span style="font-family:Courier New;font-size:9pt;"><span style="color:blue;">insert</span><br />
<span style="color:blue;">into</span> Customers<span style="color:gray;">(</span>CustomerID<span style="color:gray;">,</span> CompanyName<span style="color:gray;">)<br />
</span></span></p>
<p><span style="font-family:Courier New;font-size:9pt;"><span style="color:blue;">values</span><span style="color:gray;">(</span><span style="color:red;">&#8216;BBBBB&#8217;</span><span style="color:gray;">,</span><br />
<span style="color:red;">&#8216;Bbbbb&#8217;</span><span style="color:gray;">)<br />
</span></span></p>
<p><span style="color:blue;font-family:Courier New;font-size:9pt;">go<br />
</span></p>
<p>Cool!!  <span style="font-family:Courier New;font-size:8pt;">(1 row(s) affected) </span>What else did you suspect? <span style="font-family:Wingdings;">J</span></p>
<p>Let&#8217;s do the same in LINQ&#8230; Run the below statement in LINQPad:<span style="color:blue;font-family:Courier New;font-size:10pt;"><br />
</span></p>
<h6><span style="font-size:12pt;">Customers ct = <span style="color:blue;">new</span> Customers { CustomerID = <span style="color:#dc1414;">&#8220;CCCCC&#8221;</span>, CompanyName = <span style="color:#dc1414;">&#8220;Ccccc&#8221;</span> };<br />
Customers.InsertOnSubmit(ct);<br />
SubmitChanges();<br />
</span></h6>
<p>Mmmmm!!! What this?!?!&#8230; It doesn&#8217;t work&#8230;</p>
<p>The following error is displayed:</p>
<p><span style="color:red;"><strong><span style="font-family:Tahoma;font-size:9pt;">SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM</span><br />
</strong></span></p>
<p>Let&#8217;s have a look at the SQL generated:</p>
<p><span style="font-family:Verdana;font-size:9pt;"><span style="color:blue;">INSERT</span><span style="color:black;"><br />
</span><span style="color:blue;">INTO</span><span style="color:black;"><br />
</span><span style="color:#dc1414;">[Customers]</span><span style="color:black;">(</span><span style="color:#dc1414;">[CustomerID]</span><span style="color:black;">, </span><span style="color:#dc1414;">[CompanyName]</span><span style="color:black;">, </span><span style="color:#dc1414;">[ContactName]</span><span style="color:black;">, </span><span style="color:#dc1414;">[ContactTitle]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Address]</span><span style="color:black;">, </span><span style="color:#dc1414;">[City]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Region]</span><span style="color:black;">, </span><span style="color:#dc1414;">[PostalCode]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Country]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Phone]</span><span style="color:black;">, </span><span style="color:#dc1414;">[Fax]</span><span style="color:black;">, </span><span style="color:#dc1414;">[CreateDate]</span><span style="color:black;">)<br />
</span></span></p>
<p><span style="font-family:Verdana;font-size:9pt;"><span style="color:blue;">VALUES</span><span style="color:black;"> (</span><span style="color:#2b91af;">@p0</span><span style="color:black;">, </span><span style="color:#2b91af;">@p1</span><span style="color:black;">, </span><span style="color:#2b91af;">@p2</span><span style="color:black;">, </span><span style="color:#2b91af;">@p3</span><span style="color:black;">, </span><span style="color:#2b91af;">@p4</span><span style="color:black;">, </span><span style="color:#2b91af;">@p5</span><span style="color:black;">, </span><span style="color:#2b91af;">@p6</span><span style="color:black;">, </span><span style="color:#2b91af;">@p7</span><span style="color:black;">, </span><span style="color:#2b91af;">@p8</span><span style="color:black;">, </span><span style="color:#2b91af;">@p9</span><span style="color:black;">, </span><span style="color:#2b91af;">@p10</span><span style="color:black;">, </span><span style="color:#2b91af;">@p11</span><span style="color:black;">)<br />
</span></span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p0: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [CCCCC]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p1: Input NVarChar (Size = 5; Prec = 0; Scale = 0) [Ccccc]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p2: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p3: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p4: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p5: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p6: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p7: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p8: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p9: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p><span style="color:green;font-family:Verdana;font-size:9pt;">&#8211; @p10: Input NVarChar (Size = 0; Prec = 0; Scale = 0) [Null]<br />
</span></p>
<p>The createdate field is also included in the insert statement and no value for @P11. This is a bit weird! LINQ up to its many tricks again, which it has up its sleeve. But let&#8217;s go on and see what should be done to get past this.</p>
<p>So all we do is basically just included createdate in the LINQ statement:</p>
<h6><span style="font-size:12pt;">Customers ct = <span style="color:blue;">new</span> Customers { CustomerID = <span style="color:#dc1414;">&#8220;CCCCC&#8221;</span>, CompanyName = <span style="color:#dc1414;">&#8220;Ccccc&#8221;</span>, CreateDate = Datetime.Now };<br />
Customers.InsertOnSubmit(ct);<br />
SubmitChanges();<br />
</span></h6>
<p>Now it&#8217;s hunky-dory!</p>
<p>I did a bit of further investigation. Created a new field (Varchar(50), Nullable, Default value=&#8221;me&#8221;). Did an insert from SQL and the default value was set, but from LINQ the field stayed null. So from this I came to the following conclusion: <span style="color:red;">LINQ ignores all the default value&#8217;s and binding&#8217;s setup on your database!</span></p>
<p>Hopefully someone might be able to prove me wrong on this. Am I missing something?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mvkatredleaf.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mvkatredleaf.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mvkatredleaf.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mvkatredleaf.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mvkatredleaf.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mvkatredleaf.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mvkatredleaf.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mvkatredleaf.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=10&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mvkatredleaf.wordpress.com/2009/04/03/linqtosqlbasicspart1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/203d86ad0b48993231397bd8d1f73478?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">mvkredleaf</media:title>
		</media:content>
	</item>
		<item>
		<title>First Blog!</title>
		<link>http://mvkatredleaf.wordpress.com/2009/04/01/first-blog/</link>
		<comments>http://mvkatredleaf.wordpress.com/2009/04/01/first-blog/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 07:56:23 +0000</pubDate>
		<dc:creator>mvkredleaf</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://mvkatredleaf.wordpress.com/?p=4</guid>
		<description><![CDATA[Hi There, Welcome to my new Blog! I will be blogging something here soon. Watch this space! For the interim please visit my site and send me any comments related to my site. RedLeaf:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=4&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hi There,</p>
<p>Welcome to my new Blog!</p>
<p>I will be blogging something here soon. Watch this space!</p>
<p>For the interim please visit my site and send me any comments related to my site.</p>
<p><strong>RedLeaf:</strong><br />
<a href="http://www.redleaf.co.za"><img class="alignnone size-full wp-image-7" title="RedLeaf" src="http://mvkatredleaf.files.wordpress.com/2009/04/logo.png?w=101&#038;h=108" alt="RedLeaf" width="101" height="108" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mvkatredleaf.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mvkatredleaf.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mvkatredleaf.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mvkatredleaf.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mvkatredleaf.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mvkatredleaf.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mvkatredleaf.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mvkatredleaf.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mvkatredleaf.wordpress.com&amp;blog=7189682&amp;post=4&amp;subd=mvkatredleaf&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mvkatredleaf.wordpress.com/2009/04/01/first-blog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/203d86ad0b48993231397bd8d1f73478?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">mvkredleaf</media:title>
		</media:content>

		<media:content url="http://mvkatredleaf.files.wordpress.com/2009/04/logo.png" medium="image">
			<media:title type="html">RedLeaf</media:title>
		</media:content>
	</item>
	</channel>
</rss>
