我有一个使用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