<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/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>Steve Sloka</title><link>http://weblogs.asp.net/stevesloka/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Linq -- SubmitChanges() not saving to database</title><link>http://weblogs.asp.net/stevesloka/archive/2009/09/08/linq-submitchanges-not-saving-to-database.aspx</link><pubDate>Tue, 08 Sep 2009 17:18:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7196648</guid><dc:creator>monkey9987</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/stevesloka/rsscomments.aspx?PostID=7196648</wfw:commentRss><comments>http://weblogs.asp.net/stevesloka/archive/2009/09/08/linq-submitchanges-not-saving-to-database.aspx#comments</comments><description>&lt;p&gt;I've been working with Linq now for a while, but sometimes the simplest things get the best of you.&amp;nbsp; I was working with a new project where I had been using Linq all over the place. Everything was working, selecting rows, inserting logs, etc, etc, however, one portion was not. I was attempting to get a row from the database, changing a value then saving back that row.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Here's an example:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;DataContext db = new DataContext(pConnectionString);&lt;/p&gt;&lt;p&gt;MyRow pRow = db.MyRows.SingleOrDefault(p =&amp;gt; p.pkID == ppkID);&lt;/p&gt;&lt;p&gt;pRow.column = DateTime.Now;&lt;/p&gt;&lt;p&gt;db.SubmitChanges();&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Looked good to me.&amp;nbsp; So I did some digging through my database and found that for some reason I did not set a Primary Key on the table I was trying to update. There aren't any exceptions or errors thrown so it was a little more hidden. &lt;/p&gt;&lt;p&gt;So to summarize, make sure you set your primary keys when using linq, even if it needs to be a surrogate key!&lt;br&gt;&lt;br&gt;~ Steve&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7196648" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/stevesloka/archive/tags/Linq/default.aspx">Linq</category></item><item><title>VS2008 Performance</title><link>http://weblogs.asp.net/stevesloka/archive/2008/01/28/vs2008-performance.aspx</link><pubDate>Mon, 28 Jan 2008 18:26:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5666686</guid><dc:creator>monkey9987</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/stevesloka/rsscomments.aspx?PostID=5666686</wfw:commentRss><comments>http://weblogs.asp.net/stevesloka/archive/2008/01/28/vs2008-performance.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;I have been having some performance problems with Visual Studio 2008 web applications.&amp;nbsp; I see a delay when working on aspx pages.&amp;nbsp; Just typing, adding controls, or switching between Design to Code view (or even Split) would spike the cpu a little and freeze up for 10-15 seconds. &lt;/P&gt;
&lt;P mce_keep="true"&gt;I found &lt;A class="" href="http://forums.microsoft.com/msdn/showpost.aspx?postid=2612451&amp;amp;siteid=1&amp;amp;sb=0&amp;amp;d=1&amp;amp;at=7&amp;amp;ft=11&amp;amp;tf=0&amp;amp;pageid=1" mce_href="http://forums.microsoft.com/msdn/showpost.aspx?postid=2612451&amp;amp;siteid=1&amp;amp;sb=0&amp;amp;d=1&amp;amp;at=7&amp;amp;ft=11&amp;amp;tf=0&amp;amp;pageid=1"&gt;this forum post&lt;/A&gt; which fixed my issue completely. It seems to be related to the HTML validation. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Here's the change which worked for me:&lt;/P&gt;
&lt;P mce_keep="true"&gt;Tools&amp;nbsp;--&amp;gt; Options --&amp;gt; Text Editor --&amp;gt; HTML --&amp;gt; Validation and clear the 'Show errors' checkbox to completely disable any HTML validation at all.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;~ Steve&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5666686" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/stevesloka/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>LINQ to DataTable</title><link>http://weblogs.asp.net/stevesloka/archive/2008/01/28/linq-to-datatable.aspx</link><pubDate>Mon, 28 Jan 2008 16:54:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5666487</guid><dc:creator>monkey9987</dc:creator><slash:comments>22</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/stevesloka/rsscomments.aspx?PostID=5666487</wfw:commentRss><comments>http://weblogs.asp.net/stevesloka/archive/2008/01/28/linq-to-datatable.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;We&amp;nbsp;have been adopting Linq slowly but surely and have run into some issues we never had to deal with in the past.&amp;nbsp; Currently I use DataSets in VS2005 for everything.&amp;nbsp; These are nice since they return DataTables easily and allow updates / inserts / etc without issue.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;When we dove into Linq and had to return a DataTable for the first time we were stuck.&amp;nbsp; Looking through examples &amp;amp; searching online did not return much. I did find an example by Kevin Goff&amp;nbsp;in &lt;A class="" href="http://www.code-magazine.com/article.aspx?quickid=0707051" mce_href="http://www.code-magazine.com/article.aspx?quickid=0707051"&gt;CoDe Magazine&lt;/A&gt; which outlined 13 tips for Linq.&amp;nbsp; This worked great except I had some issues with null datatypes.&amp;nbsp;Those issues should be fixed in the sample below.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The following code outlines a quick way using Linq to query a database and return the results to a DataTable.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;U&gt;Here is my newly created class:&lt;/U&gt;&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;ConvertDataTable&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;{&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataTable&lt;/FONT&gt;&lt;FONT size=2&gt; ToADOTable&amp;lt;T&amp;gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;this&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;IEnumerable&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;T&amp;gt; varlist, &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;CreateRowDelegate&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;T&amp;gt; fn)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;{&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataTable&lt;/FONT&gt;&lt;FONT size=2&gt; dtReturn = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataTable&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Could add a check to verify that there is an element 0&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;T TopRec = varlist.ElementAt(0);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Use reflection to get property names, to create table&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// column names&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;PropertyInfo&lt;/FONT&gt;&lt;FONT size=2&gt;[] oProps =&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;((&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Type&lt;/FONT&gt;&lt;FONT size=2&gt;)TopRec.GetType()).GetProperties();&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;PropertyInfo&lt;/FONT&gt;&lt;FONT size=2&gt; pi &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; oProps)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;{&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Type&lt;/FONT&gt;&lt;FONT size=2&gt; colType = pi.PropertyType;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt; ((colType.IsGenericType) &amp;amp;&amp;amp; (colType.GetGenericTypeDefinition() == &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;typeof&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Nullable&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;&amp;gt;)))&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;colType = colType.GetGenericArguments()[0];&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;dtReturn.Columns.Add(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataColumn&lt;/FONT&gt;&lt;FONT size=2&gt;(pi.Name, colType));&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt; (T rec &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; varlist)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;{&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataRow&lt;/FONT&gt;&lt;FONT size=2&gt; dr = dtReturn.NewRow();&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;foreach&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;PropertyInfo&lt;/FONT&gt;&lt;FONT size=2&gt; pi &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; oProps)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; dr[pi.Name] = pi.GetValue(rec, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;) == &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt; ? &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DBNull&lt;/FONT&gt;&lt;FONT size=2&gt;.Value : pi.GetValue(rec, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;null&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;} 
&lt;P&gt;dtReturn.Rows.Add(dr);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; (dtReturn);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;delegate&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt;[] &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;CreateRowDelegate&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;T&amp;gt;(T t);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Here is the usage in code:&lt;/U&gt;&lt;/P&gt;&lt;FONT size=2&gt;LData.My&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataContext&lt;/FONT&gt;&lt;FONT size=2&gt; db = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; LData.My&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataContext&lt;/FONT&gt;&lt;FONT size=2&gt;();&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;FONT size=2&gt; query = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;from&lt;/FONT&gt;&lt;FONT size=2&gt; p &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;in&lt;/FONT&gt;&lt;FONT size=2&gt; db.Extensions&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;w&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;here&lt;/FONT&gt;&lt;FONT size=2&gt; p.DepartmentNumber == &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"412"&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;select&lt;/FONT&gt;&lt;FONT size=2&gt; p;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;DataTable&lt;/FONT&gt;&lt;FONT size=2&gt; dt = query.ToADOTable(rec =&amp;gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;object&lt;/FONT&gt;&lt;FONT size=2&gt;[] { query }); &lt;/FONT&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Hope this helps someone else out. &lt;BR&gt;&lt;BR&gt;~ Steve&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5666487" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/stevesloka/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/stevesloka/archive/tags/Linq/default.aspx">Linq</category><category domain="http://weblogs.asp.net/stevesloka/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>New Blog!</title><link>http://weblogs.asp.net/stevesloka/archive/2008/01/23/new-blog.aspx</link><pubDate>Wed, 23 Jan 2008 16:59:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5640122</guid><dc:creator>monkey9987</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/stevesloka/rsscomments.aspx?PostID=5640122</wfw:commentRss><comments>http://weblogs.asp.net/stevesloka/archive/2008/01/23/new-blog.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;I responsed to &lt;A class="" href="http://joeon.net/post/2008/01/Wanna-Blog-on-ASPNET-.aspx" mce_href="http://joeon.net/post/2008/01/Wanna-Blog-on-ASPNET-.aspx"&gt;Joe's post&lt;/A&gt; on getting a new blog setup on asp.net here we are.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I work for a Software company 20 minutes outside of Pittsburgh, PA.&amp;nbsp; We develop communications based software which integrates into systems like AVAYA, &amp;amp; Cisco.&amp;nbsp; We heavily use ASP.NET, SQL 2005, Reporting Services, and Winforms in a day-to-day operations in the software we sell.&amp;nbsp; We also do a fair amount of .NET remoting. &lt;/P&gt;
&lt;P mce_keep="true"&gt;More details to come!&lt;BR&gt;&lt;BR&gt;~ Steve&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5640122" width="1" height="1"&gt;</description></item></channel></rss>