无法将参数值从Guid转换为String

时间:2010-04-20 12:02:00

标签: c# string datatable guid

我知道并且谷歌搜索了答案,但没有运气:/

周前一切都运转良好。

我对存储库进行了还原,重新创建了tableadapter等......没有任何帮助。

当我尝试在我的应用程序中保存时,此时我得到一个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 个答案:

答案 0 :(得分:6)

反过来说。您的userId是一个字符串,您需要参数的GUID值:

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

提供的UserId是GUID支持的格式之一。构造函数supports many formats

根据以下评论进行修改:

事实证明,您正在询问如何运行如下的选择语句:

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

我认为您应该重新检查您的数据模型并找到解决方案。

答案 1 :(得分: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);

希望它有所帮助!!!