我知道并且谷歌搜索了答案,但没有运气:/
周前一切都运转良好。
我对存储库进行了还原,重新创建了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 - 无法转换为字符串???怎么会发生这种情况?
答案 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);
希望它有所帮助!!!