<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Steve Sloka</title><subtitle type="html" /><id>http://weblogs.asp.net/stevesloka/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/stevesloka/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/stevesloka/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2008-01-23T11:59:00Z</updated><entry><title>Linq -- SubmitChanges() not saving to database</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/stevesloka/archive/2009/09/08/linq-submitchanges-not-saving-to-database.aspx" /><id>http://weblogs.asp.net/stevesloka/archive/2009/09/08/linq-submitchanges-not-saving-to-database.aspx</id><published>2009-09-08T17:18:00Z</published><updated>2009-09-08T17:18:00Z</updated><content type="html">&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;</content><author><name>monkey9987</name><uri>http://weblogs.asp.net/members/monkey9987.aspx</uri></author><category term="Linq" scheme="http://weblogs.asp.net/stevesloka/archive/tags/Linq/default.aspx" /></entry><entry><title>VS2008 Performance</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/stevesloka/archive/2008/01/28/vs2008-performance.aspx" /><id>http://weblogs.asp.net/stevesloka/archive/2008/01/28/vs2008-performance.aspx</id><published>2008-01-28T18:26:00Z</published><updated>2008-01-28T18:26:00Z</updated><content type="html">&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;</content><author><name>monkey9987</name><uri>http://weblogs.asp.net/members/monkey9987.aspx</uri></author><category term="Visual Studio" scheme="http://weblogs.asp.net/stevesloka/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>LINQ to DataTable</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/stevesloka/archive/2008/01/28/linq-to-datatable.aspx" /><id>http://weblogs.asp.net/stevesloka/archive/2008/01/28/linq-to-datatable.aspx</id><published>2008-01-28T16:54:00Z</published><updated>2008-01-28T16:54:00Z</updated><content type="html">&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;</content><author><name>monkey9987</name><uri>http://weblogs.asp.net/members/monkey9987.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/stevesloka/archive/tags/.NET/default.aspx" /><category term="Linq" scheme="http://weblogs.asp.net/stevesloka/archive/tags/Linq/default.aspx" /><category term="Visual Studio" scheme="http://weblogs.asp.net/stevesloka/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>New Blog!</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/stevesloka/archive/2008/01/23/new-blog.aspx" /><id>http://weblogs.asp.net/stevesloka/archive/2008/01/23/new-blog.aspx</id><published>2008-01-23T16:59:00Z</published><updated>2008-01-23T16:59:00Z</updated><content type="html">&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;</content><author><name>monkey9987</name><uri>http://weblogs.asp.net/members/monkey9987.aspx</uri></author></entry></feed>