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

.net dapper tsql

我有一个使用SQL“uniqueidentifier”类型的现有数据库,它看起来像一个不同于.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或String不起作用。

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


许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow