• c#反射在ORM中的应用


    引用:https://www.bilibili.com/video/BV19J411v7yk?p=1

    (1)ORM

           对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。.NET中EF,Log4就是这种框架。

    什么是“持久化” 
    持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

    什么是 “持久层” 
    持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。

     (2)下面是一个使用反射获取字段属性并赋值的例子

     public  class People
        {
    
            public People()
            {
                Console.WriteLine("{0}被创建",this.GetType().FullName);
    
            }
            public int Id { get; set; }
            /// <summary>
            /// 属性Name
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// 字段Description
            /// </summary>
            public string Description;
        }

    下面是调用:

          static void Main(string[] args)
            {
                try
                {   
                    //获取类型--可以不用动态加载,直接获取类型
                    Type type = typeof(People);
                    //创建对象
                    object o = Activator.CreateInstance(type); 
                    //获取属性并赋值
                    foreach (PropertyInfo property in type.GetProperties())
                    {
                        if (property.Name.Equals("Id"))
                        {
                            property.SetValue(o, 12);
                        }
                        else
                        {
                            property.SetValue(o, "测试名称");
                        }
                    }
                    foreach (FieldInfo filed in type.GetFields())
                    {
                        if (filed.Name.Equals("Description"))
                        {
                            filed.SetValue(o, "测试描述"); 
                        }
                    }
                    //上面是赋值,下面可以获取相应的值
                    foreach (PropertyInfo property in type.GetProperties())
                    {
                     
                        Console.WriteLine($"属性名称:{property.Name},值:{property.GetValue(o)}");
                    }
                    foreach (FieldInfo filed in type.GetFields())
                    {
                        Console.WriteLine($"字段名称:{filed.Name},值:{filed.GetValue(o)}");
                    }
    
                    Console.ReadKey();
    
                }
                catch (Exception e)
                {
    
                }
            }

    结果

    Reflection.Model.People被创建
    属性名称:Id,值:12
    属性名称:Name,值:测试名称
    字段名称:Description,值:测试描述

    (3)封装ORM,通过ID做唯一查询

  • 相关阅读:
    app移动测试 (自动化遍历方法和技巧)(转载大佬)
    使用Jmeter录制脚本并调试
    整理token,session ,cookies 和正则表达式整理
    ·接口测试核心:URL&HTTP协议详解
    性能测试基本概念 聚合报告指标分析
    数据分析技能点梳理
    数据分析整体知识点架构(转载)
    数据分析职业前景规划
    数据分析三年建议指导(书籍等)
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式 (转载)
  • 原文地址:https://www.cnblogs.com/anjingdian/p/12822483.html
Copyright © 2020-2023  润新知