2010-04-20 22 views
5

estoy al final de mi conocimiento y en Google por la respuesta también, pero sin suerte: Hace/no pudo convertir el valor del parámetro de un GUID en una cadena

Semana todo funcionaba bien.

Hice una reversión en el repositorio, recreé el cargador de cuadros, etc ... nada ayudó.

Cuando trato de guardar en mi solicitud me sale un SystemInvalidCastException en este punto:

PersonListDataSet.cs:

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** 
    } 
} 

Todo se ha quedado atascado aquí porque un GUID - y he comprobado la vista previa tabla de datos con la herramienta lupa es realmente un verdadero Guid en la columna de la tabla de datos - no se puede convertir en una cadena ??? ¿Cómo puede suceder eso?

+0

Por favor, muéstrenos su SQL. – SLaks

+0

Por favor, muéstrenos la excepción y el seguimiento de la pila, y muéstrenos el valor del ID de usuario que está ingresando al método. –

+1

¿Se supone que @userId es un Guid? Entonces '[" @useruser "]. Value' debe asignarse con valor Guid en lugar de con String. – Regent

Respuesta

6

Es al revés. Su ID de usuario es una cadena y se necesita un valor GUID para sus parámetros:

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

UserId Siempre está en uno de los formatos soportados para un GUID. El constructor supports many formats.

Editar, basándose en las observaciones siguientes:

Resulta que usted está preguntando cómo ejecutar una instrucción de selección como:

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

Creo que debería volver a revisar su modelo de datos y encontrar una solución .

+0

userId es varchar aquí no Guid. – Elisabeth

+0

@ user320460: Es exactamente por eso que necesita convertirlo en un Guid. Los parámetros son Guids, ¿no? –

+0

Pensándolo mejor, mejor nos muestra un valor de ejemplo de userId. –

2

¿Has probado:

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); 

creo que sirve !!!

Cuestiones relacionadas