它指向
的行Id = dataReader.GetGuid(0),
while (dataReader.Read())
{
Partners.Add(new Partner {
Id = dataReader.GetGuid(0),
Name = dataReader.GetString(1),
Email = dataReader.GetString(2),
Finished = dataReader.GetInt32(3) == 1
});
}
}
我已经确认 Id
和dataReader.GetGuid(0)
都属于Guid
类型,如果您能相信的话。
Id
属于Guid
类型,因为它是
public class Partner
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public bool Finished { get; set; }
}
和dataReader.GetGuid(0)
的类型为Guid
,因为当我这样做时
public class Partner
{
//public Guid Id { get; set; }
public string Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public bool Finished { get; set; }
}
和
Id = dataReader.GetString(0)
我收到错误
无法转换类型为&System; Guid'的对象。输入' System.String'
毫无意义!
编辑:当我隐式输入时,它看起来我正在获取值:
答案 0 :(得分:0)
dataReader.GetString(0)
会返回String
,并且不会将Guid
隐含地投放到String
,因此会InvalidCastException
。
尝试:
Id = dataReader.GetGuid(0).ToString()
另外,尝试使用String
索引器获取值,而不是integer
索引器:
Id = dataReader.GetGuid("Id"),
Name = dataReader.GetString("Name"),
Email = dataReader.GetString("Email"),
Finished = dataReader.GetInt32("Finished") == 1
否则,在结果中添加列会破坏您的代码。
更好的是,尝试使用EntityFramework
为您完成所有映射。
答案 1 :(得分:0)
这是你的答案。如果要在合作伙伴类中使用Guid类型,当您从SQL Server读取数据时,将从服务器返回的字符串数据类型转换为Guid类型,如下所示
while (dataReader.Read())
{
Partners.Add(new Partner {
Id = Guid.Parse(dataReader.GetString(0)),
Name = dataReader.GetString(1),
Email = dataReader.GetString(2),
Finished = dataReader.GetInt32(3) == 1 });
}
但您的合作伙伴班级将具有Id类型Guid,如下所示
public class Partner
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public bool Finished { get; set; }
}
答案 2 :(得分:0)
尝试将操作参数强制转换为Guid
时遇到了这个问题。
Guid.Parse(context.ActionArguments["someArgument"])
这里的问题是ActionArguments是一个包含IDictionary<string, object>
之类对象的IDictionary
尝试将object
强制转换为Guid
时,会出现错误。解决方案是将其转换为字符串,然后进行转换。
Guid.Parse(context.ActionArguments["someArgument"].ToString());