2016-06-07 8 views
-1

Ich habe eine Tabelle in meinem VB.NET-Code, die einen Alias ​​mit seinem richtigen Namen, mit Alias ​​als Schlüssel zuordnen.Was passiert, wenn ich mit einem Primärschlüssel umgehen muss, der String.Empty in vb.net entspricht?

Problem ist, dass ich den Fall von Alias ​​zu behandeln habe eine leere Zeichenfolge sein und das verursacht eine Ausnahme, weil String.Empty gleich Nothing in VB.NET

Wie soll ich diesen Fall behandeln soll? Gibt es eine Art, wie ich damit umgehen könnte die zugrunde liegende DB Definition von so etwas wie dies ohne Bearbeitung:

CREATE TABLE [tablename] (
[alias] NVARCHAR (100) NOT NULL, 
[name] NVARCHAR (100) NULL, 
PRIMARY KEY CLUSTERED ([alias] ASC) 
); 

etwas wie folgt aus:

CREATE TABLE [tablename] (
[alias] NVARCHAR (100) NULL, UNIQUE 
[name] NVARCHAR (100) NULL 
); 
+2

Klingt wie ein schlechter Entwurf zu mir. Was passiert, wenn Sie zwei Personen mit demselben Alias ​​haben? –

+0

Es passiert einfach nie, ich brauche diese Tabelle nur, um eine Liste von Hardware-Herstellern zu ihrem Standard-Namen zu normalisieren (wie 'nvidia corp' einfach zu 'nVidia' oder 'HP Drucker' zu 'HP'), so ist in gewisser Weise gebaut um diese Art von Problemen zu vermeiden (ja unsere Lieferanten geben uns gerne Probleme, auch da gibt es ein Designproblem in der DB, ziemlich sicher) – Forna

+1

Und was passiert, wenn Sie zwei leere Aliase haben? Es ist grundsätzlich schlechtes Design. Sie benötigen einen künstlichen Schlüssel, normalerweise eine Identitätsspalte. – peterG

Antwort

2

Okay, string.Empty = Nothing gleich True, string.Empty Is Nothing gleich False.

Fiddle Here.

Verwenden = nicht mit Nothing Strings auf Gleichheit zu testen.

+0

Leider habe ich wenig Kontrolle darüber, wie der Code die Constraints überprüft, weil der meiste Code automatisch generiert wird und alles, was ich sehe, von der 'SqlClient.SqlDataAdapter.Fill (dataTable)' -Methode behandelt wird, für die eine ConstraintException ausgelöst wird die leere Zeichenfolge – Forna

+0

@Foma, nun, entweder müssen Sie den Vergleich ändern oder was Sie vergleichen. – Jodrell

Verwandte Themen