Ejemplo n.º 1
0
 public static void TryAddRepository(Type repositoryType)
 {
     var attri = repositoryType.GetSingleAttribute<RepositoryForAttribute>();
     if (attri != null)
     {
         Type entityType  = attri.EntityType;
         var listType = Convention_ListForEntity(entityType);
         var item = new EntityMatrix(entityType, listType, repositoryType);
         Add(item);
     }
 }
Ejemplo n.º 2
0
        public static void TryAddRepository(Type repositoryType)
        {
            var attri = repositoryType.GetSingleAttribute <RepositoryForAttribute>();

            if (attri != null)
            {
                Type entityType = attri.EntityType;
                var  listType   = Convention_ListForEntity(entityType);
                var  item       = new EntityMatrix(entityType, listType, repositoryType);
                Add(item);
            }
        }
Ejemplo n.º 3
0
        private static EntityMatrix FastFindByRepositoryType(Type repositoryType)
        {
            try
            {
                _rwLock.EnterReadLock();

                EntityMatrix item = null;
                _repositoryIndex.TryGetValue(repositoryType, out item);
                return(item);
            }
            finally
            {
                _rwLock.ExitReadLock();
            }
        }
Ejemplo n.º 4
0
        private static EntityMatrix FastFindByListType(Type listType)
        {
            try
            {
                _rwLock.EnterReadLock();

                EntityMatrix item = null;
                _listIndex.TryGetValue(listType, out item);
                return(item);
            }
            finally
            {
                _rwLock.ExitReadLock();
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 通过实体类找到约定项
        /// </summary>
        /// <param name="entityType"></param>
        /// <returns></returns>
        public static EntityMatrix FindByEntity(Type entityType)
        {
            if (entityType == null)
            {
                throw new ArgumentNullException("entityType");
            }

            var item = FastFindByEntityType(entityType);

            if (item == null)
            {
                var listType = Convention_ListForEntity(entityType);
                var rpType   = Convention_RepositoryForEntity(entityType);
                item = new EntityMatrix(entityType, listType, rpType);
                Add(item);
            }

            return(item);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 通过仓库类找到约定项
        /// </summary>
        /// <param name="repositoryType"></param>
        /// <returns></returns>
        public static EntityMatrix FindByRepository(Type repositoryType)
        {
            if (repositoryType == null)
            {
                return(null);
            }

            var item = FastFindByRepositoryType(repositoryType);

            if (item == null)
            {
                var entityType = Convention_EntityForRepository(repositoryType);
                var listType   = Convention_ListForEntity(entityType);
                item = new EntityMatrix(entityType, listType, repositoryType);
                Add(item);
            }

            return(item);
        }
Ejemplo n.º 7
0
        private static void Add(EntityMatrix item)
        {
            try
            {
                _rwLock.EnterReadLock();

                if (!_entityIndex.ContainsKey(item.EntityType))
                {
                    _entityIndex.Add(item.EntityType, item);
                    if (item.ListType != null)
                    {
                        _listIndex.Add(item.ListType, item);
                    }
                    if (item.RepositoryType != null)
                    {
                        _repositoryIndex.Add(item.RepositoryType, item);
                    }
                }
            }
            finally
            {
                _rwLock.ExitReadLock();
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 通过列表类找到约定项
        /// </summary>
        /// <param name="listType"></param>
        /// <returns></returns>
        public static EntityMatrix FindByList(Type listType)
        {
            if (listType == null) throw new ArgumentNullException("listType");

            var item = FastFindByListType(listType);

            if (item == null)
            {
                var entityType = Convention_EntityForList(listType);
                var rpType = Convention_RepositoryForEntity(entityType);
                item = new EntityMatrix(entityType, listType, rpType);
                Add(item);
            }

            return item;
        }
Ejemplo n.º 9
0
        private static void Add(EntityMatrix item)
        {
            try
            {
                _rwLock.EnterReadLock();

                if (!_entityIndex.ContainsKey(item.EntityType))
                {
                    _entityIndex.Add(item.EntityType, item);
                    if (item.ListType != null)
                    {
                        _listIndex.Add(item.ListType, item);
                    }
                    if (item.RepositoryType != null)
                    {
                        _repositoryIndex.Add(item.RepositoryType, item);
                    }
                }
            }
            finally
            {
                _rwLock.ExitReadLock();
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 通过仓库类找到约定项
        /// </summary>
        /// <param name="repositoryType"></param>
        /// <returns></returns>
        public static EntityMatrix FindByRepository(Type repositoryType)
        {
            if (repositoryType == null) return null;

            var item = FastFindByRepositoryType(repositoryType);

            if (item == null)
            {
                var entityType = Convention_EntityForRepository(repositoryType);
                var listType = Convention_ListForEntity(entityType);
                item = new EntityMatrix(entityType, listType, repositoryType);
                Add(item);
            }

            return item;
        }