Не удалось преобразовать значение параметра из Guid в строку - PullRequest
5 голосов
/ 20 апреля 2010

Я нахожусь в конце своих знаний и тоже погуглил за ответ, но не повезло: /

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

Я сделал возврат к хранилищу, воссоздал табличный адаптер и т. Д ... ничего не помогло.

Когда я пытаюсь сохранить в своем приложении, я получаю 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 - и я проверил предварительный просмотр данных с помощью инструмента «Лупа», действительно истинный Guid в столбце данных - не может быть преобразован в строку ??? Как это может произойти?

Ответы [ 2 ]

6 голосов
/ 20 апреля 2010

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

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

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

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

Оказывается, вы спрашиваете, как выполнить оператор select, например:

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

Я думаю, вам следует перепроверить свою модель данных и найти решение.

2 голосов
/ 20 мая 2010

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

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

Надеюсь, это поможет !!!

...