【问题标题】:Into what C# data type should I retrieve a SQL Server UNIQUEIDENTIFIER? [duplicate]我应该将 SQL Server UNIQUEIDENTIFIER 检索到哪种 C# 数据类型? [复制]
【发布时间】: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


【解决方案1】:

cast 尝试使用 Guid 字符串创建 Guid 或使用 Guid.Parse

 Id = new Guid(dataReader.GetString(0)),

或者更好地直接使用DataReader.GetGuid() 而不是获取字符串并转换为Guid。

 Id = dataReader.GetGuid(0),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2017-12-27
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多