I am *not* apologizing for MS...just warning you with what I think the
response will be.  Again, I understand the default, but they should expose
the ability to do it differently (e.g. the ComparisonOptions like I stated
below).



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 Franklin Gray
Sent: Monday, October 24, 2005 8:44 PM
To: [email protected]
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."
<[email protected]>
Sent by "Discussion of advanced .NET topics."
<[email protected]>



        To:     [email protected]
        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: [email protected]
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: [email protected]
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: [email protected]
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."
<[email protected]>
Sent by "Discussion of advanced .NET topics."
<[email protected]>



        To:     [email protected]
        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: [email protected]
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

Reply via email to