2017年7月27日 星期四

[C#] Custom column using Dapper (1)


  • 主要有時後回傳 Column 的名稱,不好閱讀或者是中文,因此想要重新命名,但通常需要修改 SQL 語法,如不想修改 SQL 語法,可使用此方法
  • 實作 SqlMapper.ITypeMap
  • 將 ColumnAttributeTypeMapper.cs 實作至專案中
  • Sql 資料
  • -- =============================================
    -- Author:  Lyndonliu
    -- =============================================
    ALTER PROCEDURE [dbo].[SP_DemoGetUserInfo]
    AS
    BEGIN
        SELECT
        UserInfo.Name AS '姓名',
        UserInfo.Age AS '年齡'
        FROM UserInfo
    END
    SQL

  • 資料結構 member 
    • Add [Column(Name = "ColumnName")] info
    • Code
    using CustomColumnLibrary.Infrastructure;
    
    namespace CustomColumnLibrary.Models
    {
        ///
        /// User Info
        ///
        public class User
        {
            ///
            /// User Name
            ///
            [Column(Name = "姓名")]
            public string Name { get; set; }
            ///
            /// User Age
            ///
            [Column(Name = "年齡")]
            public int Age { get; set; }
        }
    }
    C#
  • Dapper 查詢
    • Add Dapper.SqlMapper.SetTypeMap Info
    • Code
    List< User> lUser = null;
    using (SqlConnection con = new SqlConnection(Info.LyndonliuConnectionString))
    {
        // 呼叫 Dapper.SqlMapper.SetTypeMap
        // 對應的類別跟欄位映射丟進去就可以了
        Dapper.SqlMapper.SetTypeMap(typeof(User), new ColumnAttributeTypeMapper< User>());
    
        // 執行 Query
        lUser = con.Query< User>("SP_DemoGetUserInfo",
                            commandType: CommandType.StoredProcedure,
                            commandTimeout: 0).ToList();
    }
    C#

沒有留言:

張貼留言