<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.org.za/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>n.code</title><link>http://dotnet.org.za/ncode/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>SQL Server Error: OLE DB error trace [OLE/DB Provider 'SQLOLEDB' IUnknown::QueryInterface returned 0x80004005: The provider did not give any information about the error.]</title><link>http://dotnet.org.za/ncode/archive/2007/08/20/sql-server-error-ole-db-error-trace-ole-db-provider-sqloledb-iunknown-queryinterface-returned-0x80004005-the-provider-did-not-give-any-information-about-the-error.aspx</link><pubDate>Mon, 20 Aug 2007 09:15:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:202319</guid><dc:creator>n.code</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=202319</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/08/20/sql-server-error-ole-db-error-trace-ole-db-provider-sqloledb-iunknown-queryinterface-returned-0x80004005-the-provider-did-not-give-any-information-about-the-error.aspx#comments</comments><description>SUMMARY You receive the following error trying to execute a query against a linked server: Server: Msg 7399, Level 16, State 1, Line [Line Number] OLE DB provider &amp;#39;SQLOLEDB&amp;#39; reported an error. The provider did not give any information about the error. OLE DB error trace [OLE/DB Provider &amp;#39;SQLOLEDB&amp;#39; IUnknown::QueryInterface returned 0x80004005: The provider did not give any information about the error.] Solution Turn off the SQLOLEDB provider options LevelZeroOnly IndexAsAccessPath...(&lt;a href="http://dotnet.org.za/ncode/archive/2007/08/20/sql-server-error-ole-db-error-trace-ole-db-provider-sqloledb-iunknown-queryinterface-returned-0x80004005-the-provider-did-not-give-any-information-about-the-error.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=202319" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://dotnet.org.za/ncode/archive/tags/DataBase+Management/default.aspx">DataBase Management</category></item><item><title>Random Ramblings Over Ruby On Microsoft .NET</title><link>http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx</link><pubDate>Fri, 03 Aug 2007 12:57:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:199470</guid><dc:creator>n.code</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=199470</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx#comments</comments><description>&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://martinfowler.com/bliki/RubyMicrosoft.html" title="RubyMicrosoft" target="_blank"&gt;Martin
Fowler argues&lt;/a&gt; that &lt;a href="http://www.iunknown.com/2007/07/a-first-look-at.html" title="IronRuby"&gt;IronRuby&lt;/a&gt; gives Microsoft the opportunity to collaborate with,
and extend its .NET platform to a larger AlphaGeeks and open source developer
base. According to Martin the Ruby community is very eager to develop on the
Microsoft platform.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;One thing
that caught my attention was his argument that there is a concern that
AlphaGeeks are moving away from the Microsoft platform. His contacts at &lt;/span&gt;Redmond told him that
they were seeing a departure of technical leaders away from the Windows platform.
Yes a lot of developers don’t like Microsoft’s approach to software and
development (I’m a big critic myself), and I’m sure those will leave the MS
camp when they feel it’s necessary. But a lot of &lt;span&gt;AlphaGeeks started using C#, and got a new
eagerness to use it since its inception.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;





&lt;p class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="MsoNormal"&gt;From my experience Microsoft was bleeding leading edge
developers to Java during the days when they were still trying to figure out
what to make of it (who remembers the J++ dispute), and how it will put a new
spin on the software development world. But since the advent of C# and .NET,
they’ve pretty much delivered the goods.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;Herewith my random ramblings that I sent to Martin:&lt;br /&gt;&amp;nbsp;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"&gt;&lt;span&gt;&lt;span&gt;1.&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;Martin.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
”Another reason is people. Microsoft doesn&amp;#39;t like to acknowledge this in
public, but there is a real concern that AlphaGeeks are moving away from the
Microsoft platform. There&amp;#39;s a growing sense that Microsoft&amp;#39;s vision is armies
of Morts in command-and-control organizations. There often seems to be outright
discouragement of tools to enable talented enterprise developers, or of agile
development processes.&lt;br /&gt;
&lt;br /&gt;
A few years ago my (limited) contacts in Redmond
told me that they were seeing a real drift of technical leaders away from the
Windows platform. More recently these signs seem to be increasing. Reading the &amp;#39;softie part
of my blogroll I got a sense of real disillusionment amongst people who have
been long-time Microsoft supporters. Agile-oriented developers have been
frustrated with the direction of Microsoft tools. Microsoft conferences barely
mentioning agile processes, leaning much more to waterfall approaches. The
tools, with their rigid role-separations, actively discourage the blurry
boundaries that agilists prefer.&amp;quot;&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;
N.Code.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;Ever considered that this might exactly be the
reason that organizations are increasingly adopting their use of .NET? Think
about it. There are a lot more average developers (possibly myself) available. This
rigid team and project structure suits companies, and average developers.
Managers know what they can expect of their teams, and the &amp;quot;insert role X
here&amp;quot; knows exactly what is expected of him. Each one almost like a small
gear in the great development machine. &lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;I mean a manager doesn&amp;#39;t want to know that he
is dependent on a talented agilest. The ability to just plug in a new employee,
once the previous one&amp;#39;s lifetime expires, exceeds the desire to apply multi-talented
ones. Developers are approached as commodities.&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;Hiring talented developers also costs more. This
is probably one of the biggest complaints I hear about non-Microsoft platforms,
that developers for them are too difficult to find, and costly to hire, compared
to the masses of Microsoft developers.&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;Of course this is more from the angle of IT
departments in non-IT organizations, like Banks, and the government.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"&gt;&lt;span&gt;&lt;span&gt;2.&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;Martin.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Indeed it&amp;#39;s already past next year for Microsoft. We&amp;#39;ve seen a noticeable
drop-off in interest from our clients for Microsoft projects,&lt;span&gt;&amp;nbsp; &lt;/span&gt;particularly in the US. In Australia, .NET hasn&amp;#39;t got any
foothold at all amongst our clients. I&amp;#39;m not sure what to make of this data. We
aren&amp;#39;t so big to be a statistically valid sample on our own. But it&amp;#39;s a useful
data point nonetheless particularly since we like to think our clients are the
&amp;quot;alpha IT shops&amp;quot;.&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="text-indent:18pt;"&gt;&lt;span&gt;&lt;b&gt;N.Code. &lt;/b&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;&lt;a href="http://intervate.com" target="_blank" title="Intervate"&gt;Intervate&lt;/a&gt; mainly does work for non-IT
organizations, and I do not see any slowdown in .NET adoption. Obviously my
perception is skewed, since Intervate is a Microsoft partner. But still, we
have done work in almost every big South African organization, and I have yet
to see an anti-Microsoft one. Even the South African government touting its OSS strategy, is
currently one of the biggest Microsoft shops around, and many new projects are
done in .NET.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"&gt;&lt;span&gt;&lt;span&gt;3.&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;Martin.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;This is important because, as Tim O&amp;#39;Reilly believes, the alpha geeks point
to what everyone else will be doing in a few years time.&amp;quot;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;N.Code.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;Examining how most events in history ended, it
was always the majority/masses that had the final say. Yes the royals always
ruled for a while, but eventually the revolution brought them to their knees.
The Microsoft platform has always been the home of the majority of people (developers?).&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"&gt;&lt;span&gt;&lt;span&gt;4.&lt;span style="font-family:&amp;#39;Times New Roman&amp;#39;;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;Martin.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;So what I see for Ruby and Microsoft is an opportunity.&amp;quot;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style="margin-left:18pt;"&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;N.Code.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There is definitely the opportunity for Microsoft here to win the hearts and
minds of the OSS
and alpha geeks to a certain extent. But there&amp;#39;s an additional reason for Ruby,
and that is to gain a bigger share of Microsoft based development, and gain the
recognition of Microsoft shops. This will give Ruby a Microsoft facing side,
that does not seem as threatening as its current only-for-OSS image. It will allow Ruby to take part in the growth Microsoft based solutions. &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx&amp;amp;;subject=Random+Ramblings+Over+Ruby+On+Microsoft+.NET" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx&amp;amp;;title=Random+Ramblings+Over+Ruby+On+Microsoft+.NET" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx&amp;amp;title=Random+Ramblings+Over+Ruby+On+Microsoft+.NET" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx&amp;amp;;title=Random+Ramblings+Over+Ruby+On+Microsoft+.NET" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx&amp;amp;;title=Random+Ramblings+Over+Ruby+On+Microsoft+.NET&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/08/03/random-ramblings-over-ruby-on-microsoft-net.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=199470" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/.NET/default.aspx">.NET</category><category domain="http://dotnet.org.za/ncode/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://dotnet.org.za/ncode/archive/tags/Martin+Fowler/default.aspx">Martin Fowler</category><category domain="http://dotnet.org.za/ncode/archive/tags/Java/default.aspx">Java</category><category domain="http://dotnet.org.za/ncode/archive/tags/Mircosoft/default.aspx">Mircosoft</category><category domain="http://dotnet.org.za/ncode/archive/tags/IronRuby/default.aspx">IronRuby</category><category domain="http://dotnet.org.za/ncode/archive/tags/Ruby/default.aspx">Ruby</category><category domain="http://dotnet.org.za/ncode/archive/tags/Open+Source/default.aspx">Open Source</category></item><item><title>Common .NET Memory Issues</title><link>http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx</link><pubDate>Mon, 25 Jun 2007 15:29:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:190478</guid><dc:creator>n.code</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=190478</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx#comments</comments><description>&lt;p&gt;Charl
Botha, senior developer at &lt;a href="http://www.intervate.com" title="Intervate" target="_blank"&gt;Intervate&lt;/a&gt;, and I had some discussions around .NET
memory issues, and how to measure the size of a CLR object in memory.&lt;/p&gt;&lt;p&gt;Here&amp;#39;s what
Charl had to say: &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&amp;quot;I have yet
to discover how one can retrieve the size of an object in pure CLR, the method
that I used was to take an object created in CLR, get the GCHandle, then get
the size of the object in unmanaged memory. This I don&amp;#39;t think would help you.&lt;/p&gt;





&lt;p&gt;There is
software available that you can use, free, that can measure memory usage. &lt;br /&gt;&lt;/p&gt;



&lt;p&gt;They are
dead slow since they are virtual machines, like Java, but are able to take the
measurements for you. &lt;br /&gt;&lt;/p&gt;



&lt;p&gt;The CLR
profiler I found to be the best product to help me find out which objects are
not memory happy. &lt;br /&gt;&lt;/p&gt;





&lt;p&gt;Here&amp;#39;s a list
of things that are not very good to memory and will abuse you system.&lt;br /&gt;&lt;br /&gt;Note, this
infromation was composed nearly two years ago based on the 1.1 .Net framework,
so I&amp;#39;m not 100% sure that they still affect the system as badly as they did
last time.&lt;/p&gt;

&lt;p&gt;1. &lt;i&gt;&lt;b&gt;Delegates&lt;/b&gt;&lt;/i&gt;,
the typical += assigning to events, a lot of coders abuse this and every time a
new object is created they create a new delegate and bind it to the object,
bad.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;There
should only be one delegate created when the assembly is loaded and reused, the
-= must then be used to unbind the object when the destructor is called or
disposed. Very, very important.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;2. Secondly,
&lt;i&gt;&lt;b&gt;fonts, brushes, and graphics in general&lt;/b&gt;&lt;/i&gt;. Each graphically driven object needs a
handle, and handles are created when the object is created. But when the GC
collects the object, it does not dispose of the handle, bad.&lt;/p&gt;





&lt;p&gt;Once again,
use the object that are already created by the application and not manually by
your code.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;3. &lt;i&gt;&lt;b&gt;Streams&lt;/b&gt;&lt;/i&gt;,
any stream reader or writer must be closed and disposed, if a coder does not do
this, the handle to the memory is kept open until the process is killed.
Always, close stream, so search through your code and see where you open
streams, from files, to XML, to serialization.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;





&lt;p&gt;4. &lt;i&gt;&lt;b&gt;Threads&lt;/b&gt;&lt;/i&gt;,
every time a thread is created in the virtual machine, certain memory is
allocated to control this thread, in the real world, i.e. OS systems 5+
allocate 1mb of memory to manage a thread, create a lot of threads, use a lot
of memory, whenever possible use thread managers and processing queues to run
transactions rather than just creating a thread for every transaction.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;5. Lastly,
use the &lt;i&gt;&lt;b&gt;GC.WaitForPendingFinalizers&lt;/b&gt;&lt;/i&gt; after transactions, this will help with
thread memory allocation not just application memory, remember, threads drive
process, processes, drive jobs.&amp;quot;&lt;/p&gt;



&lt;p&gt;Hope this
discussion helps others, as it helped me with some commonly encountered .NET
memory usage and development issues.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx&amp;amp;;subject=Common+.NET+Memory+Issues" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx&amp;amp;;title=Common+.NET+Memory+Issues" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx&amp;amp;title=Common+.NET+Memory+Issues" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx&amp;amp;;title=Common+.NET+Memory+Issues" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx&amp;amp;;title=Common+.NET+Memory+Issues&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/06/25/common-net-memory-issues.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=190478" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/.NET/default.aspx">.NET</category><category domain="http://dotnet.org.za/ncode/archive/tags/Memory+Issues/default.aspx">Memory Issues</category><category domain="http://dotnet.org.za/ncode/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://dotnet.org.za/ncode/archive/tags/Delegates/default.aspx">Delegates</category><category domain="http://dotnet.org.za/ncode/archive/tags/Streams/default.aspx">Streams</category><category domain="http://dotnet.org.za/ncode/archive/tags/Threading/default.aspx">Threading</category></item><item><title>Bulk Update and Insert of Object State Stored by SQL Server 2000, Using .NET (C#)</title><link>http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx</link><pubDate>Mon, 14 May 2007 17:19:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:151207</guid><dc:creator>n.code</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=151207</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx#comments</comments><description>&lt;p&gt;This is a how to/quick start for doing bulk inserts or updates of data on SQL Server 2000 and .NET.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;1. Create a simple class:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Serializable]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Entity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private int _id;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private string _name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private string _description;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public int ID&lt;br /&gt;&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; get&lt;br /&gt;&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; return _id;&lt;br /&gt;&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; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public string Name&lt;br /&gt;&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; get&lt;br /&gt;&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; return _name;&lt;br /&gt;&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; set&lt;br /&gt;&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; _name = value;&lt;br /&gt;&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; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public string Description&lt;br /&gt;&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; get&lt;br /&gt;&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; return _description;&lt;br /&gt;&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; set&lt;br /&gt;&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; _description = value;&lt;br /&gt;&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;

&lt;p&gt;2. Create a class to manage a set of Entities:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System;&lt;br /&gt;&amp;nbsp; &amp;nbsp; using System.Data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.Collections;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.Data.SqlClient;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using Microsoft.Practices.EnterpriseLibrary.Data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using Microsoft.Practices.EnterpriseLibrary.Data.Sql;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Entities: IDisposable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private ArrayList _entityList = new ArrayList();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public Entity this[int idx]&lt;br /&gt;&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; get&lt;br /&gt;&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; return _entityList[idx] as Entity;&lt;br /&gt;&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void Add( Entity entity )&lt;br /&gt;&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; lock ( _entityList.SyncRoot )&lt;br /&gt;&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; _entityList.Add( entity );&lt;br /&gt;&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;br /&gt;&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; _store();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private void _store()&lt;br /&gt;&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; ArrayList dirtyEntityList = new ArrayList();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; lock ( _entityList.SyncRoot )&lt;br /&gt;&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; for ( int iEnt = 0; iEnt &amp;lt; _entityList.Count;&amp;nbsp;&amp;nbsp; iEnt++ )&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; {&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; Entity entity = _entityList[iEnt] as Entity;&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; if ( entity.IsDirty )&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; dirtyEntityList.Add( entity );&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; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Copy ArrayList to Entity array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Entity[] entities = dirtyEntityList.ToArray( typeof( Entity ) ) as Entity[];&lt;br /&gt;&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; // Serialize array&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string xml = Serialization.XmlSerialize( entities );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Create SQL command&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Database db = DatabaseFactory.CreateDatabase();&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; DBCommandWrapper command = db.GetStoredProcCommandWrapper( &amp;quot;Entity_Set&amp;quot; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; command.AddInParameter( &amp;quot;@entities&amp;quot;, DbType.String, xml );&lt;br /&gt;&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; // Send dirty Entities to SQL Server&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; db.ExecuteNonQuery( command );&lt;br /&gt;&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; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;3. Create a method to serialize objects:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.IO;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.Text;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using System.Xml.Serialization;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Gets the XML of the passed object.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string XmlSerialize( object obj )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // Validate argument &amp;#39;obj&amp;#39;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ( obj == null )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throw new ArgumentNullException( &amp;quot;obj&amp;quot;, &amp;quot;Argument &amp;#39;obj&amp;#39; is null&amp;quot; );&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; XmlSerializer ser = new XmlSerializer( obj.GetType() );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MemoryStream ms = new MemoryStream();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; UTF8Encoding utf8 = new UTF8Encoding(false,false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StreamWriter sw = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; string xml = null;&lt;br /&gt;&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; using ( ms )&lt;br /&gt;&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; using ( sw )&lt;br /&gt;&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; sw = new StreamWriter( ms, utf8 );&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; ser.Serialize( sw, obj );&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; xml = utf8.GetString( ms.GetBuffer() );&lt;br /&gt;&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; }&lt;br /&gt;&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; return xml;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;4. Create a stored procedure that will de-serialize the object’s XML into a table, from which new and current records are inserted or updated:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;CREATE PROCEDURE dbo.Entity_Set&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;( @entities&amp;nbsp;&amp;nbsp; &amp;nbsp;VARCHAR( 5000 ) )&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;AS&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SET NOCOUNT ON&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DECLARE @xml INT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;EXEC SP_XML_PREPAREDOCUMENT @xml OUTPUT, &lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@entities&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;-- Insert new entities&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO&amp;nbsp;&amp;nbsp;&amp;nbsp; Entity&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; ( Name&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; , Description ) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; XMLEntity.Name,&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; XMLEntity.Description&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; OPENXML ( @xml, ‘//Entity’, 2 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ( ID&amp;nbsp;&amp;nbsp; &amp;nbsp;INT&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; , Name&amp;nbsp;&amp;nbsp; &amp;nbsp;VARCHAR( 50 ) &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; , Description VARCHAR( 100 ) ) &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; XMLEntity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; XMLEntity.ID = 0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;-- Update current entitites&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;UPDATE &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Entity&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET&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; Name = XMLEntity.Name,&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; Description = XMLEntity.Description&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OPENXML ( @xml, ‘//Entity’, 2 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WITH&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ( ID&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;INT&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; , Name&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;VARCHAR( 50 )&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; , Description &amp;nbsp;&amp;nbsp; &amp;nbsp;VARCHAR( 100 ) ) &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; XMLEntity&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; WHERE&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; XMLEntity.ID = Entity.ID&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; EXEC SP_XML_REMOVEDOCUMENT @xml&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; GO&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; The OpenXml method’s last parameter indicates that this is an element centric XML table. .NET by default serializes objects with an element based schema. Use 0 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; or 1 for attribute centric XML documents.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;5. Now create a NUnit test class, to demonstrate the new bulk insert and update of data:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Summary description for EntityTests.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [TestFixture]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class EntityTests&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private static Random _random = new Random();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [Test]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; public void Entities_Update_Test()&lt;br /&gt;&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; using ( Entities ents = new Entities() )&lt;br /&gt;&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; ents.Add( _generate() );&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; ents.Add( _generate() );&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; ents.Add( _generate() );&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; ents.Add( _generate() );&lt;br /&gt;&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; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private static Entity _generate()&lt;br /&gt;&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; Entity ent = new Entity();&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; ent.Name = _random.NextDouble().ToString();&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; ent.Description = _random.NextDouble().ToString();&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; return ent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Run Entities_Update_Test() in NUnit, and see how SQL Server bulk updates the Entity table in one go! &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx&amp;amp;;subject=Bulk+Update+and+Insert+of+Object+State+Stored+by+SQL+Server+2000%2c+Using+.NET+(C%23)" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx&amp;amp;;title=Bulk+Update+and+Insert+of+Object+State+Stored+by+SQL+Server+2000%2c+Using+.NET+(C%23)" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx&amp;amp;title=Bulk+Update+and+Insert+of+Object+State+Stored+by+SQL+Server+2000%2c+Using+.NET+(C%23)" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx&amp;amp;;title=Bulk+Update+and+Insert+of+Object+State+Stored+by+SQL+Server+2000%2c+Using+.NET+(C%23)" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx&amp;amp;;title=Bulk+Update+and+Insert+of+Object+State+Stored+by+SQL+Server+2000%2c+Using+.NET+(C%23)&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/05/14/Bulk-Update-and-Insert-of-Object-State-Stored-by-SQL-Server-2000-Using-.NET-C_2300_.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=151207" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/.NET/default.aspx">.NET</category><category domain="http://dotnet.org.za/ncode/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://dotnet.org.za/ncode/archive/tags/Serialization/default.aspx">Serialization</category><category domain="http://dotnet.org.za/ncode/archive/tags/XML/default.aspx">XML</category><category domain="http://dotnet.org.za/ncode/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://dotnet.org.za/ncode/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>.NET Memory Leak: XmlSerializing your way to a Memory Leak</title><link>http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx</link><pubDate>Thu, 19 Apr 2007 08:45:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:137357</guid><dc:creator>n.code</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=137357</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/tess/archive/2006/02/15/532804.aspx" title=".NET Memory Leak: XmlSerializing your way to a Memory Leak"&gt;Tess Ferrandez talks about a .NET memory leak&lt;/a&gt;, caused by &lt;font&gt;using the default constructors other than, XmlSerializer(type) and XmlSerializer(type, 
defaultNameSpace), when XML serializing objects.&lt;/font&gt; In a nut shell, dynamic code generation, which is used in XML Serialization, Regular Expressions, and XSLT transformations, can lead to memory leaks.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx&amp;amp;;subject=.NET+Memory+Leak%3a+XmlSerializing+your+way+to+a+Memory+Leak" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx&amp;amp;;title=.NET+Memory+Leak%3a+XmlSerializing+your+way+to+a+Memory+Leak" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx&amp;amp;title=.NET+Memory+Leak%3a+XmlSerializing+your+way+to+a+Memory+Leak" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx&amp;amp;;title=.NET+Memory+Leak%3a+XmlSerializing+your+way+to+a+Memory+Leak" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx&amp;amp;;title=.NET+Memory+Leak%3a+XmlSerializing+your+way+to+a+Memory+Leak&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/04/19/net-memory-leak-xmlserializing-your-way-to-a-memory-leak.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=137357" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/.NET/default.aspx">.NET</category><category domain="http://dotnet.org.za/ncode/archive/tags/Serialization/default.aspx">Serialization</category><category domain="http://dotnet.org.za/ncode/archive/tags/Memory+Issues/default.aspx">Memory Issues</category></item><item><title>Setting up MySQL for Python (MySQLdb) on Mac OS X</title><link>http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx</link><pubDate>Wed, 31 Jan 2007 12:55:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:97634</guid><dc:creator>n.code</dc:creator><slash:comments>24</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=97634</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx#comments</comments><description>&lt;p&gt;&lt;br&gt;MySQL is an excellent, very popular and open source database management system. A binary installation is available for Mac OS, and the process of installing MySQL on Mac OS is also very well documented. So just head over to &lt;a href="http://www.dotnet.org.za/controlpanel/blogs/www.mysql.com" target="_blank"&gt;MySQL.com&lt;/a&gt;, where you will find the binary installation, together with extensive installation, and usage documentation.&lt;br&gt;&lt;br&gt;To connect to MySQL from Python use MySQL for Python (MySQLdb). Get MySQLdb from &lt;a href="http://sourceforge.net/projects/mysql-python/" target="_blank"&gt;http://sourceforge.net/projects/mysql-python/&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download MySQL from &lt;a href="http://www.dotnet.org.za/controlpanel/blogs/www.mysql.com" target="_blank"&gt;mysql.com&lt;/a&gt; and install the DBMS as instructed in the documentation.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Make sure “Library/Python/2.3”&amp;nbsp; does not have:&lt;/li&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Directory “MySQL”&lt;/li&gt;

&lt;li&gt;File “_mysql.pyd”&lt;/li&gt;

&lt;li&gt;File “_mysql_exceptions.py”&lt;/li&gt;

&lt;li&gt;File “_mysql_exceptions.pyc”&lt;br&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;  Either uninstall MySQL for Python if a setup program was used to install it, otherwise manually delete them.&lt;/p&gt;

&lt;li&gt;
Download and unpack MySQL for Python. At the time of writing this is &lt;a href="http://downloads.sourceforge.net/mysql-python/MySQL-python-1.2.1_p2.tar.gz?modtime=1144536156&amp;amp;big_mirror=0" target="_blank"&gt;MySQL-python-1.2.1_p2.tar.gz&lt;/a&gt; .&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Open Terminal and change to the directory where MySQLdb was unpacked to.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Get rid of any previous builds that might interfere, by deleting the “build” directory if it exists.&lt;br&gt;&lt;br&gt;&lt;/li&gt;

&lt;li&gt;Edit the setup.py file, and change:&amp;nbsp;&amp;nbsp; &lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return popen(“mysql_config --%s” % what)&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; to &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return popen(“/usr/local/mysql/bin/mysql_config --%s” % what)&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;

&lt;li&gt;Cleanup any previous install attempts:
&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;python setup.py clean
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;

&lt;li&gt;Build MySQLdb:&lt;br&gt;
&lt;blockquote&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;python setup.py build
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Viola! MySQL for Python is all setup, and ready for your Python-MySQL data access code. Enjoy!&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx&amp;amp;;subject=Setting+up+MySQL+for+Python+(MySQLdb)+on+Mac+OS+X" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx&amp;amp;;title=Setting+up+MySQL+for+Python+(MySQLdb)+on+Mac+OS+X" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx&amp;amp;title=Setting+up+MySQL+for+Python+(MySQLdb)+on+Mac+OS+X" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx&amp;amp;;title=Setting+up+MySQL+for+Python+(MySQLdb)+on+Mac+OS+X" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx&amp;amp;;title=Setting+up+MySQL+for+Python+(MySQLdb)+on+Mac+OS+X&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/31/setting-up-mysql-for-python-mysqldb-on-mac-os-x-2.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=97634" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/Apple/default.aspx">Apple</category><category domain="http://dotnet.org.za/ncode/archive/tags/Mac+Dev/default.aspx">Mac Dev</category><category domain="http://dotnet.org.za/ncode/archive/tags/Python/default.aspx">Python</category><category domain="http://dotnet.org.za/ncode/archive/tags/MySQL/default.aspx">MySQL</category><category domain="http://dotnet.org.za/ncode/archive/tags/Mac+OS+X/default.aspx">Mac OS X</category><category domain="http://dotnet.org.za/ncode/archive/tags/MySQL+for+Python/default.aspx">MySQL for Python</category><category domain="http://dotnet.org.za/ncode/archive/tags/Data+Access/default.aspx">Data Access</category></item><item><title>.NET How To Create and Use Custom Name-Value Config Sections</title><link>http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx</link><pubDate>Fri, 19 Jan 2007 17:05:00 GMT</pubDate><guid isPermaLink="false">2d3a9e08-b70c-4031-ba2b-8f5282a2a59a:93441</guid><dc:creator>n.code</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.org.za/ncode/rsscomments.aspx?PostID=93441</wfw:commentRss><comments>http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx#comments</comments><description>&lt;p&gt;Making over-use of the .NET's AppSettings quickly results in a messy configuration file. Especially when several assemblies' configurations are combined, it's quite painful trying to figure out which settings are for which assemblies. Some of the assemblies might even use the same setting keys, causing a real configuration nightmare. Therefore to keep things neat and tidy, without a lot of extra effort, create your own name-value configuration groups and sections, using the sectionGroup and NameValueSectionHandler.&lt;br&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Declare a new sectionGroup:&lt;br&gt;&lt;blockquote&gt;&amp;lt;configSections&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sectionGroup name="shinobido.util"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  ...&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/sectionGroup&amp;gt;&lt;br&gt;&amp;lt;/configSections&amp;gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Add a section to the sectionGroup:&lt;br&gt;&lt;blockquote&gt;&amp;lt;configSections&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sectionGroup name="shinobido.util"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;lt;section name="shinobido.util.auditLogging" type="System.Configuration.NameValueSectionHanlder&lt;font size="1"&gt;" /&amp;gt;&lt;/font&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/sectionGroup&amp;gt;&lt;br&gt;&amp;lt;/configSections&amp;gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Add the new configuration group and section using the named elements. Inside configuration section "add" elements, with key-value attributes store settings, just like AppSettings.&lt;br&gt;&lt;blockquote&gt;&amp;lt;shinobido.util&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;shinobido.util.auditLogging&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;lt;add key="applicationName" value="BlackSun" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  &amp;lt;add key="cached" value="true" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/shinobido.util.auditLogging&amp;gt;&lt;br&gt;&amp;lt;/shinobido.util&amp;gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Retrieve the settings using ConfigurationSettings.GetConfig(...), and cast the return value to a NameValueCollection.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;using System.Configuration;&lt;br&gt;using System.Collections.Specialized;&lt;br&gt;&lt;br&gt;public class Application&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string _name;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Name&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  get&lt;br&gt;&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; if ( _name == null )&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; {&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; NameValueCollection settings = ConfigurationSettings.GetConfig( "shinobido.util/shinobido.util.auditLogging" ) &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;&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;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; as NameValueCollection;&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; _name = settings["applicationName"];&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; if ( _name.Length &amp;lt;= 0 ) throw new ApplicationException( "Application name is not configured." );&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; }&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;&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; return _name;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;  }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&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; &lt;/p&gt;That's it. Your own custom config-section in 60 seconds.&lt;br&gt;&lt;font size="2"&gt;&lt;/font&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx&amp;amp;;subject=.NET+How+To+Create+and+Use+Custom+Name-Value+Config+Sections" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx&amp;amp;;title=.NET+How+To+Create+and+Use+Custom+Name-Value+Config+Sections" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx&amp;amp;title=.NET+How+To+Create+and+Use+Custom+Name-Value+Config+Sections" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx&amp;amp;;title=.NET+How+To+Create+and+Use+Custom+Name-Value+Config+Sections" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx&amp;amp;;title=.NET+How+To+Create+and+Use+Custom+Name-Value+Config+Sections&amp;amp;;top=1" target="_blank" title = "Post http://dotnet.org.za/ncode/archive/2007/01/19/net-how-to-use-custom-name-value-config-sections.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://dotnet.org.za/aggbug.aspx?PostID=93441" width="1" height="1"&gt;</description><category domain="http://dotnet.org.za/ncode/archive/tags/Configuration/default.aspx">Configuration</category><category domain="http://dotnet.org.za/ncode/archive/tags/NameValueSectionHandler/default.aspx">NameValueSectionHandler</category><category domain="http://dotnet.org.za/ncode/archive/tags/_2E00_config/default.aspx">.config</category><category domain="http://dotnet.org.za/ncode/archive/tags/AppSettings/default.aspx">AppSettings</category><category domain="http://dotnet.org.za/ncode/archive/tags/NameValueCollection/default.aspx">NameValueCollection</category><category domain="http://dotnet.org.za/ncode/archive/tags/.NET/default.aspx">.NET</category></item></channel></rss>