Example #1
0
        public void TestSaSi()
        {
            AttrOperator reflector = new AttrOperator(typeof(Test));
            var          result    = reflector.ClassInstance <TableAttribute>();

            Assert.Equal("Table", result.Name);
        }
Example #2
0
        public SqlNormalMaker(Type type, string splite = null)
        {
            if (type != null)
            {
                _handler = new AttrOperator(type);

                SqlModel model = new SqlModel(type);

                //分隔符解析
                SetSplite(model, splite);
                //表名解析
                SetTable(model);
                //主键解析
                SetPrimary(model);
                //忽略成员解析
                SetIgnores(model);
                //列名映射解析
                SetColumn(model);
                //生成静态泛型缓存
                StaticGenericModelCache(model, type);
                //生成静态类查询语句
                StaticSqlStringCache(model, type);
                //增加到缓存
                Cache(type, model);
            }
        }
Example #3
0
        public void TestSaSm()
        {
            AttrOperator reflector = new AttrOperator(typeof(Test));
            var          result    = reflector.Member <NoRepeateAttribute>();

            Assert.Equal(typeof(Test).GetMember("NoRepeate")[0], result);
        }
Example #4
0
        public void TestSaSiSm()
        {
            AttrOperator reflector = new AttrOperator(typeof(Test));
            var          result    = reflector.Mapping <PrimaryKeyAttribute>();

            Assert.NotNull(result.Instance);
            Assert.Equal(result.Member, typeof(Test).GetMember("Id")[0]);
        }
Example #5
0
        public void TestSaMm()
        {
            AttrOperator reflector = new AttrOperator(typeof(Test));
            var          result    = new List <MemberInfo>(reflector.Members <IgnoreAttribute>());

            Assert.Equal(2, result.Count());
            Assert.Equal(result.Find(item => { return(item.Name == "Ignore1"); }), typeof(Test).GetMember("Ignore1")[0]);
            Assert.Equal(result.Find(item => { return(item.Name == "Ignore2"); }), typeof(Test).GetMember("Ignore2")[0]);
        }
Example #6
0
        public SqlRelationMaker(Type type, Type[] types, string splite = null)
        {
            if (type != null)
            {
                Type[] temp_types = new Type[types.Length - 1];


                int index = 0;
                for (int i = 0; i < temp_types.Length; i += 1)
                {
                    if (i == 1)
                    {
                        index += 1;
                    }
                    temp_types[i] = types[index];
                    index        += 1;
                }

                if (type == null)
                {
                    return;
                }
                //创建标签Helper
                Type   entityType = types[0];
                string temp_name  = entityType.Name.Split('_')[0];
                if (VasilyRunner.RelationExtentsionTyps.ContainsKey(temp_name))
                {
                    entityType = VasilyRunner.RelationExtentsionTyps[temp_name];
                }

                SqlRelationModel model = new SqlRelationModel(types[1], temp_types);
                _handler = new AttrOperator(types[1]);
                //初始化关系类型
                Init(model);
                //主键解析
                SetPrimary(model);
                //分隔符解析
                SetSplite(model, splite);
                //列名映射解析
                SetColumn(model);
                //表名解析
                SetTable(model);
                //设置主体类Model -- 关联的实体
                model.SetJoinSourceModel(SqlNormalMaker.Create(entityType, splite));

                StaticGenericModelCache(model, type);
                StaticSqlStringCache(model, type);

                //增加到缓存
                Cache(type, model);
            }
        }
Example #7
0
        public SqlModel ModelWithAttr <T>(AttrOperator handler = null)
        {
            if (handler == null)
            {
                handler = _handler;
            }
            var model = CopyInstance();

            model.FilterFunction = FilterFunction;
            var attrMembers = handler.Members(typeof(T));

            model.ResetMembers(attrMembers.GetNames());
            return(model);
        }
Example #8
0
        /// <summary>
        /// 解析主键
        /// </summary>
        /// <param name="handler"></param>
        public void SetPrimary(AttrOperator handler = null)
        {
            if (handler == null)
            {
                handler = _handler;
            }
            var primary = handler.AttrAndMember <PrimaryKeyAttribute>();

            if (primary.Instance != null)
            {
                PrimaryKey      = primary.Member.Name;
                PrimaryManually = primary.Instance.IsManually;
            }
            else
            {
                PrimaryKey = null;
            }
        }
Example #9
0
        /// <summary>
        /// 解析忽略列表
        /// </summary>
        /// <param name="handler"></param>
        public void SetIgnores(AttrOperator handler = null)
        {
            if (handler == null)
            {
                handler = _handler;
            }
            var           ignores = handler.Members <IgnoreAttribute>();
            List <string> list    = new List <string>();

            foreach (var item in ignores)
            {
                list.Add(item.Name);
            }
            if (Members == null)
            {
                SetColumn(handler);
            }
            RemoveMembers(list);
        }
Example #10
0
        /// <summary>
        /// 解析列映射列表
        /// </summary>
        /// <param name="handler"></param>
        public void SetColumn(AttrOperator handler = null)
        {
            if (handler == null)
            {
                handler = _handler;
            }
            ConcurrentDictionary <string, string> _column_mapping = new ConcurrentDictionary <string, string>();
            var mappings = handler.AttrsAndMembers <ColumnAttribute>();

            foreach (var item in handler._members)
            {
                _column_mapping[item.Name] = item.Name;
            }
            foreach (var item in mappings)
            {
                _column_mapping[item.Member.Name] = item.Instance.Name;
            }
            ColumnMapping = _column_mapping;
            ResetMembers(_column_mapping.Values.ToArray());
        }
Example #11
0
 public SqlModel(Type type) : this()
 {
     EntityType = type;
     _handler   = new AttrOperator(type);
 }