【发布时间】:2016-05-13 14:12:03
【问题描述】:
我有一张这样的桌子
CREATE TABLE Partners
(
id UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(),
name NVARCHAR(50) NOT NULL,
email NVARCHAR(254) NOT NULL, -- 254 is optimal length according to http://stackoverflow.com/questions/1199190/what-is-the-optimal-length-for-an-email-address-in-a-database
PRIMARY KEY (id)
);
还有一个简单的存储过程:
CREATE PROCEDURE GetPartnersWithIds
AS
SELECT id, name
FROM Partners;
我试图读入 List<PartnerWithId> 的结果,其中 PartnerWithId 由
public class PartnerWithId
{
public Guid Id { get; set; }
public string Name { get; set; }
}
我这样做的方法是
public List<PartnerWithId> GetPartners ( )
{
List<PartnerWithId> Partners = new List<PartnerWithId>();
using (SqlCommand cmd = new SqlCommand("GetPartnersWithIds", this._Conn))
{
cmd.CommandType = CommandType.StoredProcedure;
this._Conn.Open();
using (SqlDataReader dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
Partners.Add(new PartnerWithId {
Id = (Guid)dataReader.GetString(0),
Name = dataReader.GetString(1)
});
}
}
this._Conn.Close();
}
return Partners;
}
但我遇到了一个错误
无法将类型
string转换为System.Guid
在块 (Guid)dataReader.GetString(0) 上(这实际上只是一个猜测)。获取此值的正确方法是什么?
【问题讨论】:
-
由于您使用的是
DataReader类的GetString()方法,因此您会收到该错误。你应该改用GetGuid()。
标签: c# asp.net sql-server asp.net-mvc tsql