使用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
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因