完善主體資料,免費贈送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

    主站蜘蛛池模板: 国产成人一区二区三区视频免费| 日本v片免费一区二区三区| 精品不卡一区中文字幕| 日韩最新视频一区二区三| 亚洲av福利无码无一区二区| 激情一区二区三区| 三上悠亚一区二区观看| 久久91精品国产一区二区| 无码精品一区二区三区在线| 亚洲一区二区三区91| 精品深夜AV无码一区二区老年| 欧美日韩一区二区成人午夜电影| 另类ts人妖一区二区三区| 一区二区三区视频网站| 亚洲色无码一区二区三区 | 国产婷婷一区二区三区| 中文字幕一区日韩在线视频| 人妻激情偷乱视频一区二区三区 | 中文字幕一区二区三| 日本午夜精品一区二区三区电影| 精品国产一区二区三区色欲 | 成人无码精品一区二区三区| 精品中文字幕一区在线| 无码人妻精品一区二区三区66| 精品人妻中文av一区二区三区| 久久精品成人一区二区三区| 成人无码一区二区三区| 国产精品自拍一区| 精品国产香蕉伊思人在线在线亚洲一区二区 | 精品国产a∨无码一区二区三区 | 精品少妇ay一区二区三区 | 亚洲精品色播一区二区| 国产精品 一区 在线| 中文字幕日韩一区| 精品成人一区二区三区免费视频 | 精品一区二区91| 久久精品黄AA片一区二区三区| 精品在线一区二区三区| 精品一区二区三区无码免费视频| 亚洲av成人一区二区三区在线观看| 日韩精品一区二区三区大桥未久|