首页>Program>source

我有一个使用SQL" uniqueidentifier"类型的现有数据库,该数据库看起来与.Net GUID的GUID格式不同。

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

Issue: 使用Dapper-dot-net,当我使用.Net GUID类型映射列时,它将编译并运行,但是所有.ToString()输出都显示相同的错误GUID. (嗯,这与我在SSMS中看到的不匹配)

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

想法?

最新回答
  • 9天前
    1 #

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

    使用Dapper 1.38(也使用SQL Server作为基础RDBMS),如果将POCO属性设置为 Nullable<Guid>,则映射不会遇到麻烦 .威兹威兹

    A SqlGuid or a String did not work.
    

    作为控制台应用,它会显示以下内容:

    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);
            }
        }
    }
    

  • 9天前
    2 #

    啊哈! 看来您必须将SQL uniqueidentifier转换为T-SQL中的字符串,然后映射为.Net中的字符串类型。

    Guid: 85d17a50-4122-44ee-a118-2a6da2a45461
    

    我认为在更新时需要特别注意从.Net字符串转换回T-SQL uniqueidentifier,但是我尚未测试该问题。

    string sql = @"SELECT TOP 100 CONVERT(varchar(36), MyIdColumn) AS IdColumnString FROM MyTable"; conn.Query<string>(sql).ToList();

  • SQL Server 2014备份到2012
  • asp.net mvc:实体类型未定义键-代码优先