Not so sure I agree; this is a case where ADO.NET has to be faithful to a lot of different databases, and many RDBMS systems out there don't distinguish between column values that have trailing whitespace. (SQL Server 6.5 didn't, IIRC, and when the company I was consulting for migrated up to SQL Server 7--which did--it broke a lot of code.) Not sure what the SQL standard says, though arguably that doesn't make a hill of beans of difference. If ADO.NET did the reverse (honored the trailing whitespace), then it would be surprising to those working with databases that didn't honor it. I don't think there's a "right answer" here, to be honest.
Net result: I wouldn't be too sure this was "just a hack" by a dev who "took the easy way out". Have a *little* more faith in those guys, eh? :-) Ted Neward Author, Presenter, Consultant Java, .NET, XML services http://blogs.tedneward.com > -----Original Message----- > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [EMAIL PROTECTED] On Behalf Of Franklin Gray > Sent: Monday, October 24, 2005 5:44 PM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Primary Key Bug > > Thanks for the help Shawn. > > It is not up to MS to decide how the data is to be formatted. This was > just a hack by some MS developer who was trying to get over an issue and > took the easy way out and it slipped through QA. > > > > > Message from Shawn Wildermuth > <[EMAIL PROTECTED]>@DISCUSS.DEVELOP.COM received on 10/24/2005 > 06:41 PM > > 10/24/2005 06:41 PM > > > > Shawn Wildermuth <[EMAIL PROTECTED]>@DISCUSS.DEVELOP.COM > > Please respond to "Discussion of advanced .NET topics." > <ADVANCED-DOTNET@DISCUSS.DEVELOP.COM> > Sent by "Discussion of advanced .NET topics." > <ADVANCED-DOTNET@DISCUSS.DEVELOP.COM> > > > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > cc: > Subject: Re: [ADVANCED-DOTNET] Primary Key Bug > > This is a nice conversation I am having with myself... > > Digging deeper, the internal StringStorage class is asking the DataTable > to > do the comparison but the DataTable's implementation forces the right > trimming of values, so this will always fail: > > DataTable tbl2 = new DataTable(); > DataColumn col2 = tbl2.Columns.Add("someKey", typeof(string)); > tbl2.Rows.Add(new object[] {"key1"}); > tbl2.Rows.Add(new object[] {"key1 "}); > tbl2.PrimaryKey = new DataColumn[] { col2 }; > > But, you can tell the DataTable to be non-case sensitive to make this > succeed: > > DataTable tbl = new DataTable(); > tbl.CaseSensitive = true; > DataColumn col = tbl.Columns.Add("someKey", typeof(string)); > tbl.Rows.Add(new object[] {"kEy1"}); > tbl.Rows.Add(new object[] {"keY1"}); > tbl.PrimaryKey = new DataColumn[] { col }; > > Doesn't help your problem, but I'd suspect you'd hear MS say that it makes > more sense to trim them than not...though IMHO they should expose the > CompareOptions to allow you to change it to be space sensitive. > > Thanks, > > Shawn Wildermuth > http://adoguy.com > C# MVP, MCSD.NET, Author and Speaker > > > > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Shawn Wildermuth > Sent: Monday, October 24, 2005 7:27 PM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Primary Key Bug > > Also, its not space, but its also not case sensitive: > > DataTable tbl = new DataTable(); > DataColumn col = tbl.Columns.Add("someKey", typeof(string)); > tbl.Rows.Add(new object[] {"kEy1"}); tbl.Rows.Add(new object[] {"keY1"}); > tbl.PrimaryKey = new DataColumn[] {tbl.Columns["someKey"]}; > > This fails with the same issue, they keys are thought to be the same... > > Thanks, > > Shawn Wildermuth > http://adoguy.com > C# MVP, MCSD.NET, Author and Speaker > > > > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Shawn Wildermuth > Sent: Monday, October 24, 2005 7:25 PM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Primary Key Bug > > In looking at the 1.1 implementation, it is calling > String.CompareTo(String) > which is asking for a comparison with default options, but if I do this > (sorry for the C#, its what everything defaults to in my head): > > String s1 = "key1 "; > int c = s1.CompareTo("key1"); > MessageBox.Show(string.Format("Comparison was: {0}", c)); > > It shows the values as different...so its not the CompareTo that is at > fault. Probably in the internal Index class or the DataKey. I couldn't' > find it with a quick look though. Put it up as a bug on the Feedback site > and let them tell you they won't look at it (ok, I am still pissed about > this [2]). > > > Thanks, > > Shawn Wildermuth > http://adoguy.com > C# MVP, MCSD.NET, Author and Speaker > > [1] http://lab.msdn.microsoft.com/productfeedback/ > [2] http://adoguy.com/content.aspx?id=rantview&rantid=326 > > > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Franklin Gray > Sent: Monday, October 24, 2005 7:02 PM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Primary Key Bug > > Because one row has a space in the value so the rows are unique but > ADO.net > must trim when applying the primary key. I know...bad data...but once > again...something that can't be changed. > > > > > Message from Alex Smotritsky > <[EMAIL PROTECTED]>@DISCUSS.DEVELOP.COM received on 10/24/2005 > 05:29 PM > > 10/24/2005 05:29 PM > > > > Alex Smotritsky <[EMAIL PROTECTED]>@DISCUSS.DEVELOP.COM > > Please respond to "Discussion of advanced .NET topics." > <ADVANCED-DOTNET@DISCUSS.DEVELOP.COM> > Sent by "Discussion of advanced .NET topics." > <ADVANCED-DOTNET@DISCUSS.DEVELOP.COM> > > > > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > cc: > Subject: Re: [ADVANCED-DOTNET] Primary Key Bug > > I don't get it, why shouldn't that code error? > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Franklin Gray > Sent: Monday, October 24, 2005 6:01 PM > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: [ADVANCED-DOTNET] Primary Key Bug > > Anybody noticed that this code errors? Is this fixed in 2.0? > > Module Module1 > > Sub Main() > Dim DT As New DataTable > DT.Columns.Add("Key", GetType(String)) > DT.Rows.Add(New Object() {"key1"}) > DT.Rows.Add(New Object() {"key1 "}) > DT.PrimaryKey = New DataColumn() {DT.Columns("Key")} > End Sub > > End Module > > =================================== > This list is hosted by DevelopMentor. http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor. http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor. http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > > > =================================== > This list is hosted by DevelopMentorR http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com =================================== This list is hosted by DevelopMentorĀ® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com