<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Discussions by ferguslogic</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS"></atom:link>
	<image>
		<url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
		<title>Channel 9 - Discussions by ferguslogic</title>
		<link>http://channel9.msdn.com/Niners/ferguslogic/Discussions</link>
	</image>
	<description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
	<link>http://channel9.msdn.com/Niners/ferguslogic/Discussions</link>
	<language>en</language>
	<pubDate>Sat, 25 May 2013 10:39:07 GMT</pubDate>
	<lastBuildDate>Sat, 25 May 2013 10:39:07 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<c9:totalResults>0</c9:totalResults>
	<c9:pageCount>0</c9:pageCount>
	<c9:pageSize>0</c9:pageSize>
	<item>
		<title>Tech Off - ISV - our struggle with database selection</title>
		<description><![CDATA[<p><blockquote><div class="quoteUser">jh71283 said:</div><div class="quoteText">Have you thought about <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9">
SQL Server Compact Edition</a></div></blockquote>As far as I know sql server ce&nbsp; is for 1 system.&nbsp; We need to support 1 -20 systems. Today we run up to 8 systems simultaneously and it works well&nbsp; We don't go higher than 8 systems because then Access becomes unstable and
 corrupts more frequently.&nbsp;<br /><br />Today if&nbsp;a&nbsp;customer has 15 computers we lose the sale because Access can't handle it and we have no db to support them.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/432147-ISV-our-struggle-with-database-selection/6fb5daaf935e486083ef9deb00002a8e#6fb5daaf935e486083ef9deb00002a8e</link>
		<pubDate>Fri, 10 Oct 2008 13:45:50 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/432147-ISV-our-struggle-with-database-selection/6fb5daaf935e486083ef9deb00002a8e#6fb5daaf935e486083ef9deb00002a8e</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - ISV - our struggle with database selection</title>
		<description><![CDATA[<p>We have&nbsp; a VB6&nbsp; app that has been out for about 6 years now in productoin and is currently ran by a few thousand users&nbsp; across the United States. This app is downloaded from our website, installed by the user, evaluated and purchased.<br /><br />I&nbsp;have struggled with database selection for years. On intial release of the application we released the application with an MS Access 2000 backend. We selected this because of xcopy deployment, extremely small footprint and small download size for our setup.&nbsp;&nbsp;
 As our application has grown in features and users however more and more larger business want to run it and people often request it on 10-20 systems today.<br /><br />MS Access just doesn't cut it for&nbsp;10-20 systems..it corrupts.&nbsp;&nbsp; Sql express is way, way, way too big and requires all kinds of configuration on the client for MSDTC and networking capabilities and even after all of this some other application can still come
 along and screw up the sql express install.&nbsp;&nbsp; I am not a huge fan because of all of this work.
<br /><br />VISTADB is&nbsp; a nice database but even according to their own forums it is 50% slower than MS Access and we need performance.<br /><br />MYSQL is okay but its not free like people think.&nbsp;Its only free for personal use and we got quoted like $50,000 if we needed a license for each of our customers that already have the system.
<br /><br />Because ISV's like us &nbsp;don't seem to have any great commercial&nbsp;options available for a database that is small and can be installed easily (you would think someone would build something&nbsp; like this but nobody seems to have done so) &nbsp;&nbsp;am beginning to look hard
 at&nbsp; open source databases including firebird and postGreSQL.<br /><br />What do you guys think about firebird or PostGreSQL for use with VB6 and C#.net applications win form based applications.&nbsp; Do these databases seem worse off or better off to you guys than sql server express?
<br /><br />Generic questions...just looking for some feedback and info from people who may have experienced these same Database woes.
<br /><br /><br /><br /></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/432147-ISV-our-struggle-with-database-selection/432147#432147</link>
		<pubDate>Thu, 09 Oct 2008 19:13:39 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/432147-ISV-our-struggle-with-database-selection/432147#432147</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>12</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - hopefully simple t-sql question</title>
		<description><![CDATA[<p><blockquote><div class="quoteUser">Matthew van Eerde said:</div><div class="quoteText">
<blockquote>
<div class="quoteUser">ferguslogic said:</div>
<div class="quoteText">*snip*</div>
</blockquote>
Yeah this question screams &quot;dynamically built SQL&quot; to me.<br /><br />My suggestion: sanitize the input in the CGI to be word-ish tokens seperated by, oh, say, commas: @input = 'foo,bar,baz'<br /><br />Then write T-SQL to loop over the input and build up the WHERE clause:<br />WHERE field like '%foo%' or field like '%bar%' or field like '%baz%'<br /><br />Even without full-text searching, this should be doable if you have some good hardware, not very many tickets, and relatively infrequent queries.<br /></div></blockquote>thanks for all the assistance everyone.<br /><br /></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/3c71052fb25e4be9a6629dfa0092885b#3c71052fb25e4be9a6629dfa0092885b</link>
		<pubDate>Tue, 24 Jun 2008 20:28:27 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/3c71052fb25e4be9a6629dfa0092885b#3c71052fb25e4be9a6629dfa0092885b</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>23</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - hopefully simple t-sql question</title>
		<description><![CDATA[<p><blockquote><div class="quoteUser">spivonious said:</div><div class="quoteText">
<blockquote>
<div class="quoteUser">ferguslogic said:</div>
<div class="quoteText">*snip*</div>
</blockquote>
Oh, I thought this was for an application on top of the database, not in the database itself. :doh:<br /></div></blockquote>
<p>No this is a&nbsp; sql serve stored procedure.<br /><br />No full text indexing because this is a hosted database at a&nbsp; webhost using sql server express with no full text indexing available.</p></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/89dfb9e6162a40929c359dfa009287af#89dfb9e6162a40929c359dfa009287af</link>
		<pubDate>Tue, 24 Jun 2008 18:11:13 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/89dfb9e6162a40929c359dfa009287af#89dfb9e6162a40929c359dfa009287af</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>23</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - hopefully simple t-sql question</title>
		<description><![CDATA[<p><blockquote><div class="quoteUser">spivonious said:</div><div class="quoteText">
<p>We run Oracle over here, so I can't help you if any SQL server functions exist for this, but why not just build the where clause dynamically?&nbsp;&nbsp;Split the textbox.text on a space and loop through each one adding another &quot;OR field LIKE blahblah&quot; each time.<br /><br />Dim searchItems() as String = textbox.text.Split(&quot; &quot;)<br /><br />For Dim i as Integer = LBound(searchItems) to UBound(searchItems)<br />&nbsp;&nbsp;&nbsp;&nbsp;whereClause &amp;= &quot; OR tick.descriptionStripped LIKE '%&quot; &amp; searchItems(i) &amp; &quot;%' &quot;<br />Next</p>
</div></blockquote>I would love to do that but I don't think you can build a dynamic where clause in SQL Server and append it to a static sql statement.<br /><br />You have to generate the entire statement dynamically don't you guys?<br /><br />I even have the split function already written but I don't think I have a way to do this.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/979a893467a04d1085939dfa00928604#979a893467a04d1085939dfa00928604</link>
		<pubDate>Tue, 24 Jun 2008 14:31:35 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/979a893467a04d1085939dfa00928604#979a893467a04d1085939dfa00928604</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>23</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Site Feedback - my thread is also gone - tech off area</title>
		<description><![CDATA[<p>Hey guys <br /><br />i created a thread under my account 'ferguslogic' about t-sql&nbsp; in the tech off area and it disappeared too.<br /><br />Heres how i made it disappear <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' /><br /><br />1)&nbsp; i created the thread and it showed up<br /><br />2) then i decided i needed to change something, i clicked edit and changed some text and the thread just completely disappeared<br /><br /></p>]]></description>
		<link>http://channel9.msdn.com/Forums/Feedback/411285-my-thread-is-also-gone-tech-off-area/411285#411285</link>
		<pubDate>Mon, 23 Jun 2008 20:49:18 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/Feedback/411285-my-thread-is-also-gone-tech-off-area/411285#411285</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>2</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - hopefully simple t-sql question</title>
		<description><![CDATA[<p>Okay guys i must have done this a million times but i am feeling brain dead today.<br /><br />I have 1 textbox in the user interface&nbsp;that allows the&nbsp;user to enter search criteria&nbsp;and search a couple of columns in our database in 1 table.
<br /><br />The code that I was using looked like this<br /><br /><br />(assuming @pisearchtext = &quot;rainy day&quot;)<br /><br />select * from blah blah blah<br /><p>where</p>
<p>tick.descriptionStripped like '%' &#43; @piSearchText &#43; '%' </p>
<p>or tick.title like '%' &#43; @piSearchText &#43; '%' </p>
<p>or tick.ticketnumber like '%' &#43; @piSearchText &#43; '%'</p>
<p>or tick.keywords like '%' &#43; @piSearchText &#43; '%'</p>
<br /><br />What if i want to search for each word individually however?<br /><br />I want to locate either the word 'rainy' or 'day'&nbsp;&nbsp; and not 'rainy day' together.<br /><br /><br /><br />If i knew there were 2 words i could for example write this where clause<br /><br /><p>where <br /><br />tick.descriptionStripped like '%rainy%'&nbsp; or tick.descriptionstripped like&nbsp; '%day%'</p>
I do not&nbsp;however know if there will be 1, 2,3, 4 or 18 words so I cannot use logic like this.<br /><br /><br /><br /><br /><br /><br />I am trying to do this without full text indexing.<br /><br /><br /><br /><br /></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/411254#411254</link>
		<pubDate>Mon, 23 Jun 2008 19:25:14 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/hopefully-simple-t-sql-question/411254#411254</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>23</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Serialization/Deserialization of changed entity</title>
		<description><![CDATA[<p>I have a question regarding .net Serialization...<br /><br />Heres an example to help illustrate my question.<br /><br />What happens if I have&nbsp;a custom business object similar to this:<br /><br />[serializable]<br />public class Customer<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public CustomerName {get{}set{}<br />}<br /><br /><br />and i build serialization/deserialization code for this entity so that it can be&nbsp;written and read back from an&nbsp;xml file.<br />(no problems so far..the world is round)<br /><br />Now, I decide I need an extra field in my business entity and so I change it to this...<br /><br />[serializable]<br />public class Customer<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public CustomerName {get{}set{}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public CustomerPhone {get{}set{}<br /><br />}<br /><br /><br />Now..can i still deserialize&nbsp;the xml file that&nbsp; I created before the object was modified?<br /><br />thanks in advance!<br /><br /></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/261183-SerializationDeserialization-of-changed-entity/261183#261183</link>
		<pubDate>Sun, 24 Feb 2008 01:24:27 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/261183-SerializationDeserialization-of-changed-entity/261183#261183</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>5</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Data being retrieved too fast after update?</title>
		<description><![CDATA[<p>Yes that was definitely it.</p>
<p>thank you so much. I really appreciate it.</p>
<p>&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/256359-Data-being-retrieved-too-fast-after-update/6caf5a890b98404b87859dfa00acd121#6caf5a890b98404b87859dfa00acd121</link>
		<pubDate>Thu, 19 Jul 2007 18:23:29 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/256359-Data-being-retrieved-too-fast-after-update/6caf5a890b98404b87859dfa00acd121#6caf5a890b98404b87859dfa00acd121</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Data being retrieved too fast after update?</title>
		<description><![CDATA[<p>Is it possible that even thoush c# says that a record&nbsp;is updated in the database that it actually is not for a few milliseconds or something?<br /><br />I have a C# winforms application that manages appointments. <br /><br />The problem that I am experiencing is that the application&nbsp;appears to be&nbsp;updating appointments in the database and then retrieiving the data so fast that the old data is being returned instead of the new updated data (is that possible??)<br /><br />I normally use sql server but this app is writing records to Access 2003 and I don't know if this is an Access issue or what.<br /><br />Heres the quick overview:<br /><br />When a user&nbsp;edits an existing appointment it is opened in a modal window and when the user presses save I update the record in the Database and then fire a Save() event so that the main appointment screen refreshes with the updated appointment information.<br /><br />&nbsp; (very, very&nbsp;basic stuff...nothing fancy)<br /><br /><br />This is basically what the save button code looks like on the modal form.<br /><br />private button_save()<br />{<br /><font color="#008000">&nbsp;&nbsp;&nbsp;//step&nbsp;1 save updated appointment to database<br /></font>&nbsp;&nbsp;&nbsp;SaveAppointmentToDatabase();<br /><font color="#008000"><br />&nbsp;&nbsp;&nbsp;//step 2<br />&nbsp;&nbsp;&nbsp;//fire save event so event_handler will refresh main screen</font><br />&nbsp;&nbsp;&nbsp;Save()<br />}<br /><br /><font color="#008000">//here is the saveAppointmentToDB method ..which is saving data without issue.<br /></font><br />SaveAppointmentToDatabase()<br />{<br /><font size="2">
<p>System.Data.OleDb.</font><font color="#008080" size="2">OleDbConnection</font><font size="2"> cn =</font><font color="#008080" size="2">DataHelper</font><font size="2">.GetConnection();</p>
<p>System.Data.OleDb.</font><font color="#008080" size="2">OleDbCommand</font><font size="2"> cmd = cn.CreateCommand();<br /><br /></font><font color="#0000ff" size="2">int</font><font size="2"> numberOfRowsAffected = 0;</p>
</font><font size="2">
<p>cmd.CommandText = sql;</p>
<p>numberOfRowsAffected = cmd.ExecuteNonQuery();<br />}<br /><br />numberOfRowsAffected always returns 1 indicating the record was updated successfully every time.<br /><br />Now after the code above executes, my Save event is fired and in the eventhandler I am attempting to retrieve the updated data from the database so that I can display the updated appointment information on screen for the user.<br /><br /><font color="#008000">//event handler</font><br /><font color="#0000ff" size="2">private</font><font size="2"> </font><font color="#0000ff" size="2">void</font><font size="2"> appointment_Save(</font><font color="#0000ff" size="2">object</font><font size="2"> sender,
</font><font color="#008080" size="2">EventArgs</font><font size="2"> e)<br />{<br /><font color="#0000ff" size="2">string</font><font size="2"> sql;</p>
<p>sql = </font><font color="#800000" size="2">&quot;SELECT * from Appointment where starttime &gt; #&quot;</font><font size="2"> &#43; from &#43;
</font><font color="#800000" size="2">&quot;# and startTime &lt; #&quot;</font><font size="2"> &#43; to &#43;
</font><font color="#800000" size="2">&quot;#&quot;</font><font size="2">;</p>
<p></p>
<p></font><font color="#008000" size="2">//create an open connection</p>
</font><font size="2">
<p>System.Data.OleDb.</font><font color="#008080" size="2">OleDbConnection</font><font size="2"> cn =
</font><font color="#008080" size="2">DataHelper</font><font size="2">.GetConnection();</p>
<p></font><font color="#008000" size="2">//create the command object</p>
</font><font size="2">
<p>System.Data.OleDb.</font><font color="#008080" size="2">OleDbCommand</font><font size="2"> cmd =
</font><font color="#008080" size="2">DataHelper</font><font size="2">.GetCommand(cn,sql,
</font><font color="#008080" size="2">CommandType</font><font size="2">.Text);</p>
<p></font><font color="#008000" size="2">//use the command to return a datatable</p>
</font><font size="2">
<p></font><font color="#008080" size="2">DataTable</font><font size="2"> dt = </font>
<font color="#008080" size="2">DataHelper</font><font size="2">.GetDataTable(cmd);<br /></p>
<font color="#008000" size="2">
<p>//close the open connection</p>
</font><font size="2">
<p>cn.Close();</p>
<p></font><font color="#008000" size="2">//return the datatable</p>
</font><font size="2">
<p></font><font color="#0000ff" size="2">return</font><font size="2"> dt;</p>
<p></font></font><br />}</p>
<p>When the event handler fires it retrieves the old appointment data..not the new appointment data like it should. It is as if the data in the database is not yet updated?<br /></font><font size="2"><br /><br />Even though the&nbsp;ExecuteNonQuery() in the Update function&nbsp;says&nbsp;the record&nbsp;was updated it&nbsp;appears not to be.
<br /></font><br />The reason I know this is because If I put a breakpoint in code immediately&nbsp;after&nbsp;the update and immediately before&nbsp;&nbsp;I retrieve the&nbsp;data from the database, the code works fine because&nbsp;I am slowing the app down&nbsp;by a few seconds using the breakpoint.
<br /><br />Without the break point slowing the app down, &nbsp;the old appointment data is retrieved every time.
<br /><br /><br />Does anyone have any idea why it would say my data is udpated yet it appears not&nbsp;to be, when it is retrieved&nbsp;and if I slow the
<br />app down by a few milliseconds or seconds the code works fine?<br /><br />My console.writeLine results are listed below for you showing that&nbsp;the data is being updated and then retrieved and the old data is being retrieved rather than the new data.
<br /><br />Both the update and read occur in the same millisecond. <br /><br /><font size="1">------------------------------------</p>
<p>Update Appoints new Subject= matt's teeth whitening</p>
<p>Update Appoints Time: 01:13:06:136</p>
<p>Number of rows affected =1</p>
<p>----------------------------------<br /></p>
<p><font color="#008000">//here the old subject is being returned..not the updated subject</font><br />Load Appoints Subject: matt's teeth whitening 14</p>
<p>Load Appoints Time: 01:13:06:136</p>
<p></font><br />Any help is greatly appreciated.<br /><br /><br /><br /></p>
</font></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/256359-Data-being-retrieved-too-fast-after-update/256359#256359</link>
		<pubDate>Thu, 19 Jul 2007 17:45:14 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/256359-Data-being-retrieved-too-fast-after-update/256359#256359</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - ShGetFolderPath and CSIDL</title>
		<description><![CDATA[<p>Does anybody know why the&nbsp;ShGetFolderPath API&nbsp;works with the CSIDL_COMMON_DOCUMENTS constant on all operating systems including all versions of 2000, all versions of XP, all versions of VISTA yet fails on Windows Server 2003?<br>
</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/252427-ShGetFolderPath-and-CSIDL/252427#252427</link>
		<pubDate>Sat, 17 Feb 2007 16:25:29 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/252427-ShGetFolderPath-and-CSIDL/252427#252427</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>1</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - &amp;quot;Add New Item&amp;quot; does not have master page as an option?</title>
		<description><![CDATA[<p>Hey guys, I am playing around with asp.net 2.0 and i noticed that my &quot;Add New Item&quot; dialogue box does not have &quot;master page&quot; as an option. I have tried creating new web projects but no matter what i try i can't seem to get &quot;master Page&quot; to show up in my
 &quot;Add new item&quot; dialogue box.<br>
<br>
I want to use the new master page feature. Is this a defect? Does anybody have any ideas?<br>
<br>
thanks a lot</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/248717-quotAdd-New-Itemquot-does-not-have-master-page-as-an-option/248717#248717</link>
		<pubDate>Mon, 06 Nov 2006 20:41:01 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/248717-quotAdd-New-Itemquot-does-not-have-master-page-as-an-option/248717#248717</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>2</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Tough one - Component Services and MSDTC issue XP Pro</title>
		<description><![CDATA[<p>well i am guessing that my computer manufacturer caused this problem but here is how i fixed it.</p>
<p>&nbsp;</p>
<p>I went to a command prompt.</p>
<p>I navigated to c:\windows\system32</p>
<p>I ran msdtc - install</p>
<p>that installed Msdtc and the service now appears under the &quot;services&quot; area.&nbsp; Everything appears to work fine now.</p>
<p>I have no idea why it was not installed.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/246766-Tough-one-Component-Services-and-MSDTC-issue-XP-Pro/f4c19833eb164be88abd9dea014c0361#f4c19833eb164be88abd9dea014c0361</link>
		<pubDate>Fri, 03 Nov 2006 17:04:06 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/246766-Tough-one-Component-Services-and-MSDTC-issue-XP-Pro/f4c19833eb164be88abd9dea014c0361#f4c19833eb164be88abd9dea014c0361</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Tough one - Component Services and MSDTC issue XP Pro</title>
		<description><![CDATA[<p>It is not there.<br>
There is not msdtc service located under the services area.<br>
<br>
Also, if you use net start msdtc or net stop msdtc windows says it cannot find msdtc.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/246766-Tough-one-Component-Services-and-MSDTC-issue-XP-Pro/5c2e9ee25807477a889a9dea014c033a#5c2e9ee25807477a889a9dea014c033a</link>
		<pubDate>Fri, 03 Nov 2006 16:29:09 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/246766-Tough-one-Component-Services-and-MSDTC-issue-XP-Pro/5c2e9ee25807477a889a9dea014c033a#5c2e9ee25807477a889a9dea014c033a</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Tough one - Component Services and MSDTC issue XP Pro</title>
		<description><![CDATA[<p>Hello everyone,<br>
<br>
I purchased a brand new shiny development machine last weekend (one of the&nbsp; new dual core 2 processor machines...two thumbs way up!).<br>
<br>
The operating system on the machine is XP Pro.<br>
<br>
I am coding a C# 2005 winforms application which requires MSDTC and after opening my C# project and running it&nbsp; I noticed that MSDTC is not installed on my new&nbsp;machine.&nbsp; I thought MSDTC was installed on every windows machine but apparently that is not correct.<br>
<br>
So when I go to component services to look at the Distributed Transaction Coordinator the &quot;my computer&quot; icon has a red arrow over it instead of a green arrow which makes it look like there is&nbsp;a problem.<br>
<br>
If I click on the &quot;distributed transaction coordinator&quot; folder under component services i receive this message<br>
<br>
--------------------------------------------------<br>
cannot open this folder because connection to the msdtc service on 'My Computer' failed. Make sur that:</p>
<p>The computer is running.<br>
You have permissions to administer the computer.<br>
The computer name is correct.<br>
<br>
--------------------------------------------------------------------------<br>
<br>
<br>
If I click on the &quot;com&#43;&quot; folder under component services i receive this message.<br>
-------------------------------<br>
An error occurred while processing the last operation.<br>
Error code 8004e00F - Com&#43; was unable to talk to the Microsoft Distributed Transaction<br>
Coordinator</p>
<p>The event log may contain additional troubleshooting information.<br>
---------------------------------<br>
<br>
The event log does not contain any information and I am pretty stumped.&nbsp; I double checked my&nbsp; username and I am a member of the administrator group.&nbsp; Any help is really appreciated.<br>
<br>
thanks<br>
Matt<br>
<br>
&nbsp;</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/246766-Tough-one-Component-Services-and-MSDTC-issue-XP-Pro/246766#246766</link>
		<pubDate>Wed, 01 Nov 2006 22:25:04 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/246766-Tough-one-Component-Services-and-MSDTC-issue-XP-Pro/246766#246766</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>4</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - TransactionScrope and MSDTC</title>
		<description><![CDATA[<p>From what I have read MSDTC is on all Microsoft platforms.<br>
<br>
So I am anticpating this to be true and I am using a .net service controller to check if MSDTC is running. If it not running I start it myself.<br>
<br>
If anyone knows differently please let me know.<br>
<br>
thanks a lot</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/238050-TransactionScrope-and-MSDTC/ebd113eb4be541c389e59dea014a3a55#ebd113eb4be541c389e59dea014a3a55</link>
		<pubDate>Tue, 10 Oct 2006 00:34:33 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/238050-TransactionScrope-and-MSDTC/ebd113eb4be541c389e59dea014a3a55#ebd113eb4be541c389e59dea014a3a55</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>2</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - TransactionScrope and MSDTC</title>
		<description><![CDATA[<p>Hi everyone,<br>
<br>
<br>
I have a C# 2.0 /Sql Express 05 winforms application that gets deployed to about 200 businesses across the U.S.<br>
<br>
In the C# applicaiton I have started to use transactionScope like so<br>
<br>
<font color="#0000ff" size="2">
<p>using</font><font size="2"> (</font><font color="#008080" size="2">TransactionScope</font><font size="2"> ts =
</font><font color="#0000ff" size="2">new</font><font size="2"> </font><font color="#008080" size="2">TransactionScope</font><font size="2">())</p>
<p>{</p>
</font><font size="2">
<p></font><font size="2">aEntity.save();&nbsp; //opens connection to database A <br>
bEntity.save();&nbsp; //also opens connection to database A</p>
</font><font size="2">
<p>ts.Complete();</p>
<p>}<br>
<br>
Even though&nbsp;2 connections with the same connection string are being opened to the same database Microsoft is still promoting this transaction to a distributed transaction and it is being handled by MSDTC. How do I know? I shut the MSDTC service off and this
 fails with a message that says &quot;MSDTC is not turned on&quot;.<br>
<br>
Its a small pain and some overhead but overall I am fine with this&nbsp;promotion and I have one question that I need answered.<br>
<br>
Does MSDTC run automatically on windows 2000, XP home, XP Pro and Vista because these are the platforms I need to support.<br>
<br>
Users download this application via the web and I need to know whether I am going to have to configure MSDTC or not for them.<br>
<br>
thanks for the MSDTC help.</p>
</font></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/238050-TransactionScrope-and-MSDTC/238050#238050</link>
		<pubDate>Tue, 10 Oct 2006 00:11:12 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/238050-TransactionScrope-and-MSDTC/238050#238050</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>2</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Transaction Management between layers</title>
		<description><![CDATA[<p>So upon further investigation and in depth research on this I have realized that there is no way i am going to be able to use TransactionScope.&nbsp; TransactionScope is causing my transactions to be promoted to MSDTC just because I am opening 2 connections to
 the same database...and not even at the same time...just one after the other and the first one is always closed before the second is open.</p>
<p>When MSDTC is utilized, MSDTC is turned off by default on XP home and Pro. (At least it appears to be on my development box - xp pro).&nbsp;
<br>
<br>
So on my first transaction my application errors out until MSDTC is requested 1 time. After the first request MSDTC starts&nbsp;or &quot;spins up&quot; in COM&#43; &nbsp;and all subsequent calls work.&nbsp; If I reboot the system MSDTC will stop and the first call to MSDTC errors out again
 for me.<br>
<br>
If my users have to connect to another computer on a small LAN they have to enable MSDTC remote and incoming connections and even when I do that I can't seem to get remote MSDTC connections to work.&nbsp; You have to ensure firewalls are disabled and that MSDTC
 can pass through firewalls&nbsp;if they are still enabled&nbsp;etc. etc. it is a huge nightmare.<br>
<br>
My users are mechanics, book&nbsp;keepers&nbsp;and small business owners. They download our software from our website to try it out.
<br>
<br>
I am not going to take support call after support call trying to help&nbsp;non technical users&nbsp;configure MSDTC so that they can savea&nbsp; customer record.&nbsp;<br>
<br>
Microsoft doesn't appear to have any way to programmatically configure MSDTC (maybe I am missing some .net assembly to do this somewhere)<br>
<br>
It&nbsp; just seems like&nbsp;such a huge hassle to try to deploy your application today as a Microsoft ISV.&nbsp; I can't imagine making my users go through all this configuration just to network 2 computers together.<br>
<br>
So thats my 2 cents on the new TransactionScope, Distributed Transactions and MSDTC anyway. I am going back to passing SQlTransaction objects around so my users don't have to deal with this administration nightmare of MSDTC configuration.
<br>
<br>
Can you imagine making mechanics, book keepers and other non technical users &nbsp;have to configure MSDTC everytime they want to hook up a second computer? I just can't see it.<br>
<br>
</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/227833-Transaction-Management-between-layers/20e863987ba5408b95b89dea01483008#20e863987ba5408b95b89dea01483008</link>
		<pubDate>Fri, 08 Sep 2006 22:40:48 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/227833-Transaction-Management-between-layers/20e863987ba5408b95b89dea01483008#20e863987ba5408b95b89dea01483008</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Transaction Management between layers</title>
		<description><![CDATA[<p>To be honest the Customer.Save stuff is just an example to illustrate the issue that I face today with passing sqlTransaction objects around.&nbsp; Basically I am attempting to illustrate that this can be an error prone process.<br>
<br>
The other option that I see (as pointed out&nbsp; above) is to use TransactionScope. This is actually the first method that I tried before I attempted to pass sqlTransaction objects around.<br>
<br>
The problem with this is that when I utilize TransactionScope the transaction is being promoted from a lightweight transaction to a distributed transaction using MSDTC&nbsp; as soon as a second connection is made to the same database. This&nbsp; causes two issues.<br>
<br>
1) It has a lot more overhead that light transaction management.<br>
<br>
2) The MSDTC service must be running for the transaction to succeed.<br>
<br>
Users download this winform application and install it themselves. It runs on small Lans from 1-15 computer systems.<br>
<br>
The application has has to be easy to install and should run on 2000, xp home, xp pro and Vista&nbsp;machines<br>
<br>
So now I am afraid that users are going to run into issues with MSDTC configuration on their network and face high overhead due to the promotion from Light transaction management to a distributed transaction.<br>
<br>
When I use the new <br>
<br>
using(TransactionScope transScope = new TransactionScope())<br>
<br>
functionality in C# 2.0&nbsp; I receive an error the first time I execute this code telling me that MSDTC is disabled on the current system.<br>
<br>
Then, when I run the code again it works fine because MSDTC automatically enables itself when it is called the first time.&nbsp; The event log is indicating that this service is turning itself on after the first call.<br>
<br>
I saw a post on from an ADO.NET team member and my understanding is that Microsoft may address this in the future.&nbsp;
<br>
<br>
Multiple connections to the same database should not promote a transaction to MSDTC.&nbsp;&nbsp; If two connections are made to the same database in the same transactionscope then the first connection should be pooled and used for each simultaneous connection until the
 transactionscope ends so that the transaction can remain in LTM and not Distributed state.<br>
<br>
At least that is my 2 cents anyway and I think a lot of other people will face this issue too when they begin looking at transaction management in C# 2.0/ ADo.net/Sql Server 05.<br>
<br>
As of right now, I am not sure what I will do. I may try TransactionScope and see what the performance penalty looks like.<br>
<br>
I will try to figure out if I can auto-enable MSDTC when I install the application to prevent errors for my users.<br>
<br></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/227833-Transaction-Management-between-layers/7e22e742452c45a58ca79dea01482fda#7e22e742452c45a58ca79dea01482fda</link>
		<pubDate>Fri, 08 Sep 2006 16:30:20 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/227833-Transaction-Management-between-layers/7e22e742452c45a58ca79dea01482fda#7e22e742452c45a58ca79dea01482fda</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - Transaction Management between layers</title>
		<description><![CDATA[<p>I am looking for an answer for what seems to be a very common problem but I can't seem to find any answers for it.</p>
<p>I am developing a simple C# 2.0 application. It is a winform app which is ran on small networks.&nbsp; The app is divided in typical fashion into 3 logical layers UI, business and data. Pretty straight forward.</p>
<p>In C# 2.0 I can't seem to locate a good way to handle transaction management between layers.</p>
<p>Here is an example:</p>
<p>User needs to save an order.</p>
<p>Business Tier Code example #1</p>
<p>public int SaveOrder(Order myOrder)<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //verify the order meets our business requirements prior to saving<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Validate(myOrder)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // make 2 calls to the Data Access Layer<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int orderId = DALOrder.SaveOrder(myOrder)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DALOrderItems.SaveOrderItems(myOrder);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return orderId;<br>
}</p>
<p>Each Data Access method above is located in seperate class modules and each method opens and closes its own connection to the database.</p>
<p>Because the business tier is calling mutliple Data Access methods in the data tier, I need to create a transaction in the business tier and utilize this transaction across all of the data layer methods. Upon success the business tier&nbsp;can then commit the
 transaction.</p>
<p>Today I am handling this like so:</p>
<p>Business Tier Code example #2</p>
<p>public int SaveOrder()<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlConnection myConnection = DataHelper.GetConnection();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlTransaction transaction = myConnection.BeginTransaction();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // makes 2 calls to the Data Access Layer, pass the transaction<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DAL.SaveOrder(order,transaction)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DAL.SaveOrderItems(order,transaction);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transaction.Commit();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(System.Exception)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transaction.RollBack();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myConnection.Close();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
}</p>
<p>In order for this to work my data access layer methods now have to accept a transaction parameter, look at the transaction parameter being passed and utilize the connection property of that transaction object (transaction.Connection) to connect to the database
 instead of opening and closing their own connections. </p>
<p>So if a transaction is not passed, the methods&nbsp; open and close their own connection, otherwise they use Transaction.Connection and do not close a connection at all.</p>
<p>This works okay, but it is kind of messy.</p>
<p>I am looking for an easier way to handle transactions.<br>
Perhaps, one that does not require me to pass a sqlTransaction object as a parameter to every single Data Access Layer Save, Update or delete method.</p>
<p>For example, what happens now if the above SaveOrder() business tier method needs to be called by the SaveCustomer() method and the SaveCustomer() method needs to be the transaction root.&nbsp; Today the SaveOrder() method is hardcoded as the root and always
 begins a transaction each time it is fired so should that situation arrive, our current methodology may fail.<br>
<br>
I am looking for someone who has faced this issue who can offer&nbsp;advice on how&nbsp; to handle transactions between business and data tier layers of an application.
<br>
<br>
These layers today are logical only and all reside on the same server. <br>
<br>
Microsofts examples seem to be simplified samples and only seem to&nbsp; show you how to manage transactions in the same layer or even worse..the same exact function.&nbsp; They do talk a bit about&nbsp;how to handle multiple connections to multiple databases (Distributed
 transactions) but that does not apply here.&nbsp; I have multiple connections to the same exact database.<br>
<br>
Any&nbsp;advice is greatly appreciated.</p>
<p>thank you in advance</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/227833-Transaction-Management-between-layers/227833#227833</link>
		<pubDate>Thu, 07 Sep 2006 18:38:13 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/227833-Transaction-Management-between-layers/227833#227833</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>8</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - .Net 2.0  Winform Architecture Help</title>
		<description><![CDATA[<p>Thanks a lot guys.&nbsp; Great information.</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/215649-Net-20-Winform-Architecture-Help/c20e3a77b674449283149dea01453f57#c20e3a77b674449283149dea01453f57</link>
		<pubDate>Thu, 03 Aug 2006 15:42:01 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/215649-Net-20-Winform-Architecture-Help/c20e3a77b674449283149dea01453f57#c20e3a77b674449283149dea01453f57</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>18</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - .Net 2.0  Winform Architecture Help</title>
		<description><![CDATA[<p>If this is the resolution, to create 1 method that returns an all emcompassing&nbsp;dataset with manufacturers, vendors and inventory to reduce the round trips to 1 round trip&nbsp; then the problem becomes:<br>
&nbsp;<br>
Where do you place the business and data functions if they no longer return just inventory data but also return manufacturers and vendors.&nbsp; Right now my business layer and data layer map directly to the tables for the most part. So they look like this
<br>
<br>
biz layer<br>
==========<br>
customerbiz&nbsp;&nbsp; -handles logic for customers<br>
orderbiz&nbsp;&nbsp; - handles logic for orders<br>
inventorybiz -&nbsp; handles logic for inventory<br>
manufacturerbiz - handles logic for manufacturers<br>
vendorbiz - handles logic for vendors<br>
<br>
data layer<br>
=============<br>
customerDAL - CRUD for customers<br>
orderDal - CRUD for orders<br>
inventoryDal - CRUD for inventory etc.<br>
ManufacturerDal - CRUD for Manufacturers<br>
vendorDal - CRUD for Vendors<br>
<br>
<br>
Today the architecture would&nbsp;flow like this if i was just returning inventory data by itself in a very simplistic non-real world scenario:<br>
<br>
Inventory Screen<br>
--which calls<br>
Inventory business object&nbsp; GetInventoryItem()<br>
---which calls<br>
Inventory Data Layer&nbsp;&nbsp; getInventoryItem()<br>
---which contacts database to return inventory data<br>
<br>
<br>
but now how would it flow if you are returning inventory, vendors and manufacturers all at once to support&nbsp;a real-world winform screen?<br>
<br>
Inventory Screen<br>
<br>
which calls<br>
<br>
some function in some business object&nbsp; <br>
(not sure where this function would go now or what to call it)<br>
<br>
which calls<br>
<br>
some function in data object<br>
(not sure where this function would go now or what to call it)<br>
<br>
which returns data from database<br>
<br>
<br>
Now&nbsp;that you have a function that returns manufacturers, vendors and inventory it does not fit into the inventory, vendors or manufacturer business or data objects because it is no longer returning 1 type of data.<br>
<br>
So what business object do you place this new function in and what data layer object to you place it in as well?<br>
<br>
<br>
Or<br>
<br>
Should I even worry that i am making 3 round trips on a LAN?&nbsp; Is the speed possibly negligible if the customer is running a 100 Mb network.<br>
<br>
Perhaps I should just call<br>
GetManufactuers()<br>
GetVendors()<br>
GetInventory<br>
<br>
and make 3 round trips and be done with it.&nbsp; Is it possible that this is the best solution?<br>
<br>
<br>
<br>
</p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/215649-Net-20-Winform-Architecture-Help/ff39233440504d6baeac9dea01453ecb#ff39233440504d6baeac9dea01453ecb</link>
		<pubDate>Fri, 28 Jul 2006 18:27:07 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/215649-Net-20-Winform-Architecture-Help/ff39233440504d6baeac9dea01453ecb#ff39233440504d6baeac9dea01453ecb</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>18</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
	<item>
		<title>Tech Off - .Net 2.0  Winform Architecture Help</title>
		<description><![CDATA[<p>Okay guys,<br>
<br>
I am re-writing an application in C# .NEt 2.0 right now and I could use some architecture advice.&nbsp;
<br>
<br>
Our deployment scenario.<br>
===============================<br>
<br>
The application will be deployed to&nbsp;small businesses across the U.S.&nbsp;At each business location the system could be ran on 1 standalone PC or on 5, 8 or 10 PCs simultaneously on the same LAN.&nbsp; Very simple small network deployment.<br>
<br>
Front end is C# and database is sql express 05.<br>
<br>
<br>
The architecture that i initially developed is listed below. Each layer communicates only with the layer below it and there is one serializable layer&nbsp;that can be marshalled across all layers to pass data easily&nbsp;through any layer.
<br>
<br>
3 basic layers<br>
================<br>
UI&nbsp; - all UI related logic (communicates with Business)<br>
Business - validation, other business logic (communicates with data)<br>
Data - communicates directly with sql server<br>
<br>
serializable layer can be&nbsp;marshaled to any layer..referenced by all =====================<br>
Entity<br>
&nbsp;&nbsp;contains basic classes&nbsp;company, order, user&nbsp; etc. <br>
<br>
<br>
<br>
So my method behind the madness here was this<br>
<br>
1) UI will call business function i.e GetCustomer()<br>
2) business tier&nbsp;will call data tier&nbsp;GetCustomer()<br>
3) data will return customer data to business<br>
4) business will handle any necessary logic and send customer entity to UI for display<br>
<br>
UI will utilize OO customer entity.<br>
<br>
<br>
<br>
Yeahh...well it was a nice thought. In actual application however this is not working well. Why? Because I am having to make 2-5 round trips to the database per winform&nbsp;screen and that is the problem i want to solve.<br>
<br>
Example scenario<br>
<br>
Lets say we have a winform screen.<br>
Lets say it displays inventory.<br>
<br>
The screen contains 1 inventory object, a listing of&nbsp;manufacturers and a listing of vendors.<br>
<br>
2&nbsp;resultsets/collections and 1 class (inventory) are needed for this screen to populate correctly.<br>
<br>
If i use custom entities (classes and collectiosn)<br>
=====================================<br>
with my current design the UI would need to call 3 business functions called GetVendors(), getManufacturers() and getInventory&nbsp; to populate vendor, manufacturer and inventory classes/collections to return all the data needed to the front end.<br>
<br>
Isn't this too many roundtrips to the database here?<br>
<br>
If I use a Dataset<br>
================================<br>
I can return all the data to the front end at one time but then i loose my object oriented class structure and isdirty flags etc. and I am left with a dataset on the front end that has 3 tables manufacturers vendors and inventory.<br>
<br>
<br>
<br>
<br>
The answer to this problem seems to be this<br>
<br>
1) UI calls a business function called GetInventoryScreen()<br>
2) business calls Data function GetInventoryScreen()<br>
3)data tier returns dataset to business tier with all data needed<br>
4)business tier turns dataset into OO classes/collections<br>
5) OO classes/collections returned to UI for display.<br>
<br>
This solves all problems 1 round trip and I get to use OO objects up front.<br>
<br>
The problem with this design is that my data tier has methods called GetInventoryScreen() which means that it is tied directly to the UI.<br>
<br>
What I would like is to make as few round trips as possible while using OO objects in the UI rather than Datasets if possible and without having the data tier contain functions that are based on the UI.<br>
<br>
<br>
<br>
<br>
<br></p>]]></description>
		<link>http://channel9.msdn.com/Forums/TechOff/215649-Net-20-Winform-Architecture-Help/215649#215649</link>
		<pubDate>Fri, 28 Jul 2006 16:37:49 GMT</pubDate>
		<guid isPermaLink="false">http://channel9.msdn.com/Forums/TechOff/215649-Net-20-Winform-Architecture-Help/215649#215649</guid>
		<dc:creator>ferguslogic</dc:creator>
		<slash:comments>18</slash:comments>
		<wfw:commentRss>http://channel9.msdn.com/Niners/ferguslogic/Discussions/RSS</wfw:commentRss>
	</item>
</channel>
</rss>