完善主體資料,免費贈送VIP會員!
    * 主體類型
    * 企業名稱
    * 信用代碼
    * 所在行業
    * 企業規模
    * 所在職位
    * 姓名
    * 所在行業
    * 學歷
    * 工作性質
    請先選擇行業
    您還可以選擇以下福利:
    行業福利,領完即止!

    下載app免費領取會員

    NULL

    ad.jpg

    二次開發教程:Dapper里使用Attribute自定義映射關系

    發布于:2019-07-24 16:32:10

    網友投稿

    更多

    目的將book表中的id,name,price 映射到Book類中的Id1,Name1,Price1


        class Program

        {        

            static SQLiteConnection conn;

            static string dbStr = "test.db";

            static void Main(string[] args)

            {

                SqlMapper.SetTypeMap(typeof(Book), new CustomTypeMap<Book>());//定義映射規則

                SQLiteConnection.CreateFile(dbStr);

                conn = new SQLiteConnection($"Data Source={dbStr};Version=3;");

                string sql = "create table book (id int,name varchar(20), price double)";         

     

                conn.Execute(sql);

                sql = "insert into book values(@id1,@name1,@price1)";

                conn.Execute(sql, new Book());

     

                sql = "select * from book";

                var books = conn.Query<Book>(sql);

     

                Console.ReadLine();

            }

        }

     

        public class Book

        {

            [Column("name")]

            public string Name1 { get; set; }

            [Column("id")]

            public int Id1 { get; set; }

            [Column("price")]

            public double Price1 { get; set; }

        }

     

        public class CustomTypeMap<T> : SqlMapper.ITypeMap

        {

            public ConstructorInfo FindConstructor(string[] names, Type[] types)

            {

                return null;

            }

     

            public ConstructorInfo FindExplicitConstructor()

            {

                return typeof(Book).GetConstructor(new Type[0]);

            }

     

            public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo constructor, string columnName)

            {

                return null;

            }

     

            public SqlMapper.IMemberMap GetMember(string columnName)

            {

                return new CustomMemberMap(columnName, _dict[columnName]);

            }

     

            private Dictionary<string, PropertyInfo> _dict = new Dictionary<string, PropertyInfo>();

            public CustomTypeMap()

            {

                Type type = typeof(T);

                var ps = type.GetProperties();

                foreach (var p in ps)

                {

                    var at = p.GetCustomAttribute<ColumnAttribute>();

                    if (at != null)

                    {

                        if (!string.IsNullOrWhiteSpace(at.ColumnName))

                            _dict.Add(at.ColumnName, p);

                    }

                }

            }

        }

        [AttributeUsage(AttributeTargets.Property)]

        public class ColumnAttribute : Attribute

        {

            public string ColumnName { get; }

            public ColumnAttribute(string columnName)

            {

                ColumnName = columnName;

            }

        }

     

        public class CustomMemberMap : SqlMapper.IMemberMap

        {

            public CustomMemberMap(string column,PropertyInfo propertyInfo)

            {

                ColumnName = column;

                Property = propertyInfo;

            }

            public string ColumnName { get; }

     

            public Type MemberType => Field?.FieldType ?? Property?.PropertyType ?? Parameter?.ParameterType;

     

            public PropertyInfo Property { get; }

     

            public FieldInfo Field { get; }

     

            public ParameterInfo Parameter { get; }

        }

    本文版權歸腿腿教學網及原創作者所有,未經授權,謝絕轉載。

    未標題-1.jpg

    上一篇:二次開發教程:Hello entity framework

    下一篇:二次開發教程:orm 里使用Emit

    主站蜘蛛池模板: 国产成人综合一区精品| 日本香蕉一区二区三区| 日本精品高清一区二区2021| 夜夜添无码一区二区三区| 国产精品自拍一区| 日本一区二区三区精品中文字幕| 日本一区二区三区在线观看视频 | 日韩精品一区二区三区中文字幕| 无码人妻久久久一区二区三区| 亚洲国产精品成人一区| 国产精品日韩一区二区三区| 亚洲熟女综合色一区二区三区| 99精品一区二区三区| 无码精品人妻一区二区三区免费看| 成人免费一区二区三区| 久久久久久一区国产精品| 国产一区二区精品在线观看| 精品国产日韩亚洲一区在线| 国产精品无码一区二区在线 | 天堂一区二区三区精品| 亚洲AV无码一区二区三区DV| 国产精品丝袜一区二区三区 | 人妻无码一区二区不卡无码av| 中文字幕一区二区在线播放| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 精品国产精品久久一区免费式| 亚洲熟妇无码一区二区三区| 深田咏美AV一区二区三区| 国产福利无码一区在线| 精品成人一区二区三区免费视频 | 中文精品一区二区三区四区| 韩国福利一区二区美女视频| 国产成人亚洲综合一区| 日韩精品久久一区二区三区| 国产成人av一区二区三区在线 | 久久久精品人妻一区二区三区蜜桃| 久久亚洲日韩精品一区二区三区| 亚洲天堂一区二区三区四区| 无码日韩精品一区二区免费| 视频一区二区在线观看| 亚洲无线码一区二区三区|