2010-04-20 6 views
5

Ich bin am Ende meines Wissens und gegoogelt für die Antwort auch, aber ohne Glück konvertieren:/fehlgeschlagen Parameterwert aus einer GUID in eine Zeichenkette

Woche vor allem hat gut funktioniert.

Ich habe eine Rückstellung auf das Repository, den Tableadapter usw. neu erstellt ... nichts half.

Wenn ich versuche, in meiner Anwendung zu speichern erhalte ich eine SystemInvalidCastException an dieser Stelle:

PersonListDataSet.cs: ist eine Guid hier, weil

partial class P_GroupTableAdapter 
{ 
    public int Update(PersonListDataSet.P_GroupDataTable dataTable, string userId) 
    { 
     this.Adapter.InsertCommand.Parameters["@userId"].Value = userId; 
     this.Adapter.DeleteCommand.Parameters["@userId"].Value = userId; 
     this.Adapter.UpdateCommand.Parameters["@userId"].Value = userId; 

     return this.Update(dataTable); **<-- Exception occurs here** 
    } 
} 

Alles stecken - und ich überprüfte die Datentabelle Vorschau mit das Lupenwerkzeug ist wirklich eine wahre Guid in der Spalte der Datentabelle - kann nicht in eine Zeichenfolge umgewandelt werden ??? Wie kann das passieren?

+0

Bitte zeigen Sie uns Ihre SQL. – SLaks

+0

Zeigen Sie uns die Ausnahmebedingung und die Stack-Ablaufverfolgung, und zeigen Sie uns den Wert der Benutzer-ID an, die Sie an die Methode übergeben. –

+1

Soll @userId ein Guid sein? Dann sollte '[" @userId "]. Value 'mit Guid-Wert und nicht mit String zugewiesen werden. – Regent

Antwort

6

Es ist anders herum. Ihre userId ist eine Zeichenfolge, und Sie brauchen einen GUID-Wert für Ihre Parameter:

Parameters["@userId"].Value = new Guid(userId); 

bereitgestellt UserId ist in einem der unterstützten Formate für eine GUID. Der Konstruktor supports many formats.

bearbeiten, basierend auf Kommentare unter:

Es stellt sich heraus, dass Sie fragen, wie eine select-Anweisung ausführen wie:

SELECT .... 
WHERE '{BB6DFF45-FDA7-4155-86D0-0CBF129A9104}' = `domainname\\jondoe` 

Ich denke, Sie sollten Ihre Datenmodell erneut prüfen und eine Lösung finden .

+0

userId ist varchar hier keine Guid. – Elisabeth

+0

@ user320460: Genau deshalb müssen Sie es in ein Guid konvertieren. Die Parameter sind Guids, oder? –

+0

Auf 2. Gedanken, zeigen Sie uns besser einen Beispielwert von userId. –

2

Haben Sie versucht:

this.Adapter.InsertCommand.Parameters["@userId"].Value = new Guid(userId); 
this.Adapter.DeleteCommand.Parameters["@userId"].Value = new Guid(userId); 
this.Adapter.UpdateCommand.Parameters["@userId"].Value = new Guid(userId); 

Hoffe, es hilft !!!

Verwandte Themen