【发布时间】:2016-05-13 16:03:45
【问题描述】:
它指向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”类型
没有意义!
编辑:当我隐式输入时,看起来我确实得到了我们的值:
【问题讨论】:
-
光标中有null吗?
dataReader.GetValue(0).GetType()返回什么? -
可能的方式:
Id = new Guid(Convert.ToString(dataReader.GetValue(0))) -
dataReader的第 0 列中的数据可能无法转换为Guid。见stackoverflow.com/questions/27699781/… -
@DmitryBychenko 刚刚检查过它返回
null。嗯。知道为什么吗?我正在调用的存储过程从CREATE TABLE Partners ( id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(), name NVARCHAR(50) NOT NULL, email NVARCHAR(254) NOT NULL, finished BIT NOT NULL DEFAULT 0, PRIMARY KEY (id) );生成的 T-SQL 表中获取所有列 -
@user5648283: 那是表,那查询和存储过程又是什么?
标签: c# asp.net sql-server asp.net-mvc tsql