.net - 使用 Dapper-dot-net,如何将 SQL uniqueidentifier 列映射到 .Net 类型?

标签 .net tsql dapper

我有一个使用 SQL“唯一标识符”类型的现有数据库,它看起来与 .Net GUID 的 GUID 格式不同。

问题:使用 Dapper,如何将 SQL uniqueidentifier 列映射到 .Net?

问题:
使用 Dapper-dot-net,当我使用 .Net GUID 类型映射列时,它会编译并运行,但所有 .ToString() 输出都显示相同的错误 GUID。 (好吧,它与我在 SSMS 中看到的不符)

当我尝试使用字符串类型映射列时,出现编译器错误。

想法?这可能吗?

最佳答案

我还发现我可以将它转换为 T-SQL 中的 varchar,但我想要 .NET 中的实际 GUID 类型。

使用 Dapper 1.38(也使用 SQL Server 作为底层 RDBMS),如果我将 POCO 属性设为 Nullable<Guid>,我在映射时没有问题。 . SqlGuid 或字符串不起作用。

public class MapMe
{
    public Guid? GuidByDapper { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        using (var connection = Utility.GetConnection())
        {
            var mapped = connection.Query<MapMe>("SELECT NEWID() AS GuidByDapper").Single();
            Console.WriteLine("Guid: {0}", mapped.GuidByDapper);
        }
    }
}

作为控制台应用程序,它吐出以下内容:
Guid: 85d17a50-4122-44ee-a118-2a6da2a45461

关于.net - 使用 Dapper-dot-net,如何将 SQL uniqueidentifier 列映射到 .Net 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685800/

相关文章:

c# - 以强类型方式使用对象的属性名称

.net - 在Powershell中交互使用Mutexes(et al)

c# - 如何获取 WPF 用户控件可见部分的大小?

sql-server - 获取给定年份中所有星期六的日期 - sql server

.net - 如何使用 dapper 保存整个数据表?

c# - 不同值类型之间的除以零行为不一致

sql - 将 SQL 行转换为具有值和属性的 XML 标记

sql - 使用 DATEDIFF() 的计算列

c# - 无法在 Dapper 中使用多重映射

oracle - Dapper & Oracle Clob 类型