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

    主站蜘蛛池模板: 国产AV一区二区三区传媒| 日本精品夜色视频一区二区| 国产无线乱码一区二三区| 国产av一区二区三区日韩| 亚洲一区二区三区在线观看蜜桃| 精品久久久久久中文字幕一区| 人妻无码久久一区二区三区免费| 国精产品一区一区三区有限公司| 清纯唯美经典一区二区| 一区二区三区在线观看视频 | 色噜噜狠狠一区二区| 好吊视频一区二区三区| 亚洲熟女乱综合一区二区| 中文字幕av日韩精品一区二区| 久久精品综合一区二区三区| 精品黑人一区二区三区| 一区二区国产在线播放| 亚洲av无码一区二区三区四区| 香蕉久久AⅤ一区二区三区| 亚洲国产一区在线观看| 国产一区二区三区在线视頻| 亚洲一区在线视频观看| 亚洲国产日韩一区高清在线 | 在线播放偷拍一区精品| 国产精品亚洲一区二区三区| 国产乱码精品一区二区三区四川| 日韩国产免费一区二区三区| 日韩电影一区二区| 国产一区二区女内射| 国产精品视频无圣光一区| 日韩av片无码一区二区不卡电影| 亚洲AⅤ无码一区二区三区在线| 日韩AV无码一区二区三区不卡| 国产精品成人99一区无码| 日韩内射美女人妻一区二区三区 | 日本高清一区二区三区| 国产一区二区三区在线观看精品| 精品乱码一区二区三区四区| 亚洲av无一区二区三区| 福利一区二区三区视频在线观看| 国产精品成人免费一区二区|