内部信息缓存

  在轻量级ORM内部,会产生大量的与类相关的信息,在前面的博文里面,我已经记录了如何来存储这些信息,具体请见轻量级ORM开发系列:Model类相关信息的处理一文。这些相关的信息都是在ORM第一个请求的时候根据配置文件所配置的程序集来进行反射得到的,所以在第一个请求的时候花费的时间会比较长,这里我记录我所设计的一个缓存,能够很好的解决这个问题。

  为了能够返回强类型的结果,我这里使用Dictionary作为内部存储结构而不是Hashtable,当然我知道很多成熟的ORM都是使用的Hashtable,不过我只是做一个轻量级的学习型开发,简单就好。这里的返回结果采用IDictionary接口进行返回。

  具体代码如下:

 public static class EntityList
    {
        
private static IDictionary<string, EntityInfo> StaticDic = null;

        
static EntityList()
        {
            StaticDic 
= new Dictionary<string, EntityInfo>();
        }
        
public static void InsertEntityInfo(string type,EntityInfo Info)
        {
            
if (StaticDic.ContainsKey(type))
            {
                
return;
            }
            
else 
            {
                StaticDic.Add(type,Info);
            }
        }
        
public static IDictionary<string, EntityInfo> GetDic()
        {
            
return StaticDic;
        }

        
public static void InsertEntityInfo( EntityInfo Info)
        {
            InsertEntityInfo(Info.TypeFullName, Info);
        }
        
public static bool IsContain(string name)
        {
            
return StaticDic.ContainsKey(name);
        }

        
public static void InsertEntityInfo(IEntity entity, EntityInfo Info)
        {
            
string type = entity.GetType().FullName;
            InsertEntityInfo(type,Info);
        }

        
public static EntityInfo GetEntityInfo(string type)
        {
            
if (StaticDic.ContainsKey(type))
            {
                
return StaticDic[type];
            }
            
else
            {
                
return null;
            }
        }
        
public static EntityInfo GetEntityInfo(IEntity entity)
        {
            
string type = entity.GetType().FullName;
            
return GetEntityInfo(type);
        }

        
public static EntityInfo GetEntityInfo<T>() where T:IEntity
        {
            
string type = typeof(T).FullName;
            
return GetEntityInfo(type);
        }
    }

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2022-12-23
  • 2021-08-31
猜你喜欢
  • 2021-06-17
  • 2021-07-27
  • 2021-07-22
  • 2021-11-19
相关资源
相似解决方案