2010-04-20 4 views
5

Я в конце моего ведома и гугле ответ тоже, но не повезло:/Не удалось преобразовать значение параметра из Guid в строку

неделя назад все работало хорошо.

Я сделал возврат в репозитории, воссоздал таблицу и т. Д., Ничего не помогло.

Когда я пытаюсь сохранить в моем приложении я получаю SystemInvalidCastException в этой точке:

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

Все застрял здесь, потому что в Guid - и я проверил DataTable с превью инструмент лупы его действительно истинный Guid в столбце datatable - нельзя преобразовать в строку ??? Как это может произойти?

+0

Пожалуйста, покажите нам свой SQL. – SLaks

+0

Пожалуйста, покажите нам трассировку исключения и стека и покажите нам значение userID, которое вы передаете методу. –

+1

Предполагается, что @userId является руководством? Затем '[" @userId "]. Значение должно быть назначено с помощью значения Guid, а не с String. – Regent

ответ

6

Все наоборот. Ваш идентификатор пользователя является строкой, и вам необходимо значение GUID для ваших параметров:

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

Предоставлено UserId находится в одном из поддерживаемых форматов для GUID. Конструктор supports many formats.

Edit, основываясь на комментариях ниже:

Оказывается, что вы спрашиваете, как запустить оператор выбора, как:

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

Я думаю, что вы должны повторно проверить DataModel и найти решение ,

+0

userId является varchar здесь нет Guid. – Elisabeth

+0

@ user320460: Именно поэтому вам нужно преобразовать его в Guid. Параметры - Гиды, правильно? –

+0

На второй мысли лучше показать нам пример значения userId. –

2

Вы пробовали:

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

Надеется, что это помогает !!!

Смежные вопросы