I have a table like
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 https://dev59.com/uHM_5IYBdhLWcg3w2XHw
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()
方法。 - Zohar Peled