完善主體資料,免費贈送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一区二区| 国产精品污WWW一区二区三区 | 久久精品无码一区二区app| 国产精品视频一区| 亚洲国产福利精品一区二区| 久久久久久综合一区中文字幕| 日韩有码一区二区| 日韩AV在线不卡一区二区三区| 精品国产一区二区三区香蕉事 | 视频一区视频二区制服丝袜| 国产乱人伦精品一区二区| 少妇精品无码一区二区三区| 久久福利一区二区| 亚洲av不卡一区二区三区| 亚洲综合色自拍一区| 精品国产一区二区三区免费| AV天堂午夜精品一区| 国产品无码一区二区三区在线蜜桃| 成人乱码一区二区三区av| 国产美女精品一区二区三区| 国精产品一区二区三区糖心| 中文字幕精品无码一区二区三区| 蜜桃传媒视频麻豆第一区| 日韩精品无码中文字幕一区二区| 亚洲Av无码一区二区二三区| 麻豆AV天堂一区二区香蕉| 国产在线无码视频一区| 亚洲日本一区二区三区在线不卡| 久久综合精品国产一区二区三区| 鲁丝片一区二区三区免费| 麻豆果冻传媒2021精品传媒一区下载| 中文字幕日韩精品一区二区三区| 日韩av片无码一区二区不卡电影| 视频一区在线播放|