<?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/"
	>

<channel>
	<title>Bee Eee Blog &#187; sql</title>
	<atom:link href="http://blog.bee-eee.com/category/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bee-eee.com</link>
	<description>-- C# hints and tips</description>
	<lastBuildDate>Wed, 23 Dec 2009 19:00:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>c# logging linq to sql</title>
		<link>http://blog.bee-eee.com/2009/01/01/c-logging-linq-to-sql/</link>
		<comments>http://blog.bee-eee.com/2009/01/01/c-logging-linq-to-sql/#comments</comments>
		<pubDate>Thu, 01 Jan 2009 19:04:33 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[mmsql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.bee-eee.com/?p=62</guid>
		<description><![CDATA[I&#8217;ve often been frustrated by the sql that linq produces.  Usually it&#8217;s really good, but occasionally it produced monstrosities.   The hard part is getting at the sql that&#8217;s produced by a function.  Hovering over the statement in the idea is a real pain so instead I created the following class that dumps the sql to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve often been frustrated by the sql that linq produces.  Usually it&#8217;s really good, but occasionally it produced monstrosities.   The hard part is getting at the sql that&#8217;s produced by a function.  Hovering over the statement in the idea is a real pain so instead I created the following class that dumps the sql to a file</p>
<pre class="code">
public class DCLogger : IDisposable
    {
        private StringWriter writer;

        public DCLogger(System.Data.Linq.DataContext dc)
        {
            writer = new StringWriter();
            dc.Log = writer;
        }

        #region IDisposable Members

        public void Dispose()
        {
            writer.Flush();
            System.IO.File.WriteAllText( "c:\\temp\\sql.log", writer.ToString() );
        }

        #endregion
    }
</pre>
<p>To use it just create it passing it you data context.  The results are written to the file when it&#8217;s disposed.  </p>
<pre class="code">
  using( DCLogger( dc ) )
  {
    // ... some linq statement that executes
  }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.bee-eee.com/2009/01/01/c-logging-linq-to-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS SQL Delete all the data from the tables.</title>
		<link>http://blog.bee-eee.com/2008/11/21/ms-sql-delete-all-the-data-from-the-tables/</link>
		<comments>http://blog.bee-eee.com/2008/11/21/ms-sql-delete-all-the-data-from-the-tables/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 18:24:45 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[mmsql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.bee-eee.com/?p=54</guid>
		<description><![CDATA[Here&#8217;s a helpful, and perhaps dangerous, little tidbit of code for SQL Server 2005. It deletes all of the data from all of the tables. To be completely effective, the command may need to be run more than once because of foreign keys. Basically run it until there aren&#8217;t any errors. Then the db is [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a helpful, and perhaps dangerous, little tidbit of code for SQL Server 2005.  It deletes all of the data from all of the tables.  To be completely effective, the command may need to be run more than once because of foreign keys.  Basically run it until there aren&#8217;t any errors.  Then the db is clean and empty of all data.</p>
<p><code>exec sp_MSForeachTable "delete from ?"</code></p>
<p>the sp_MSForeachTable is a very useful system stored procedure.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bee-eee.com/2008/11/21/ms-sql-delete-all-the-data-from-the-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c# linq to sql string comparisons</title>
		<link>http://blog.bee-eee.com/2008/10/27/c-linq-to-sql-string-comparisons/</link>
		<comments>http://blog.bee-eee.com/2008/10/27/c-linq-to-sql-string-comparisons/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 20:21:02 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.bee-eee.com/?p=48</guid>
		<description><![CDATA[There are four different string comparisons for handling string fields with linq to sql.  They are as follows: The exact macth DataContext dc = new DataContext(...) var results = from row in dc.table where row.string_column == "Exact Match" select row; Begins With: DataContext dc = new DataContext(...) var results = from row in dc.table where [...]]]></description>
			<content:encoded><![CDATA[<p>There are four different string comparisons for handling string fields with linq to sql.  They are as follows:</p>
<p><strong>The exact macth</strong></p>
<pre class="code">DataContext dc = new DataContext(...)
var results =
  from row in dc.table
  where row.string_column == "Exact Match"
  select row;</pre>
<p><strong>Begins With:</strong></p>
<pre class="code">DataContext dc = new DataContext(...)
var results =
  from row in dc.table
  where row.string_column.StartsWith("Ex")
  select row;</pre>
<p>produces an sql match string &#8220;Ex%&#8221;</p>
<p><strong>Contains</strong></p>
<pre class="code">DataContext dc = new DataContext(...)
var results =
  from row in dc.table
  where row.string_column.Contains("Ex")
  select row;</pre>
<p>Which is equivalent to &#8220;%Ex%&#8221;</p>
<p><strong>Ends With</strong></p>
<pre class="code">DataContext dc = new DataContext(...)
var results =
  from row in dc.table
  where row.string_column.EndsWith("Ex")
  select row;</pre>
<p>Which is equivalent to &#8220;%Ex&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bee-eee.com/2008/10/27/c-linq-to-sql-string-comparisons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c# dynamically picking the search direction with linq</title>
		<link>http://blog.bee-eee.com/2008/09/30/c-dynamically-picking-the-search-direction-with-linq/</link>
		<comments>http://blog.bee-eee.com/2008/09/30/c-dynamically-picking-the-search-direction-with-linq/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 20:31:10 +0000</pubDate>
		<dc:creator>brian</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[linq]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[coding]]></category>

		<guid isPermaLink="false">http://blog.bee-eee.com/2008/09/30/c-dynamically-picking-the-search-direction-with-linq/</guid>
		<description><![CDATA[I&#8217;ve recently been writing an application that builds a linq to sql query dynamically.  For instance: MyDataContext dc() = new MyDataContext; var query = dc.MyTables; query = query.Where( t=&#62;t.id &#62; 10); and so I want to order it by a certain column: query = query.OrderBy( t=&#62;t.id ) but the problem is the order direction isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been writing an application that builds a linq to sql query dynamically.  For instance:</p>
<pre class="code">
MyDataContext dc() = new MyDataContext;
var query = dc.MyTables;
query = query.Where( t=&gt;t.id &gt; 10);</pre>
<p>and so I want to order it by a certain column:</p>
<pre class="code">
query = query.OrderBy( t=&gt;t.id )</pre>
<p>but the problem is the order direction isn&#8217;t know before hand so at first I was stuck with the following:</p>
<pre class="code">
if ( descending )
    query = query.OrderByDescending( t=&gt;t.id);
else
    query = query.OrderBy(t=&gt;t.id);</pre>
<p>Now if there is only a few possible columns to sort against it isn&#8217;t too bad.  But when you have 10 different possible columns it really makes a lot of extra work just to control to sort direction.  So I made a little helper class that allows the following.  It works with linq and linq to sql:</p>
<pre class="code">
query = query.OrderByAscDec( t=&gt;t.id, descending );</pre>
<p>here&#8217;s the static class that implments the OrderByAscDec function:</p>
<pre class="code">
static class VPLinqExtensions
{
	public static IOrderedQueryable&lt;TSource&gt; OrderByAscDes&lt;TSource, TKey&gt;(
		this IQueryable&lt;TSource&gt; source,
		System.Linq.Expressions.Expression&lt;Func&lt;TSource,
		TKey&gt;&gt; keySelector, bool IsDescending)
	{
		if (IsDescending)
			return source.OrderByDescending(keySelector);
		else
			return source.OrderBy(keySelector);
	}
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.bee-eee.com/2008/09/30/c-dynamically-picking-the-search-direction-with-linq/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
