public void TestSaSi() { AttrOperator reflector = new AttrOperator(typeof(Test)); var result = reflector.ClassInstance <TableAttribute>(); Assert.Equal("Table", result.Name); }
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); } }
public void TestSaSm() { AttrOperator reflector = new AttrOperator(typeof(Test)); var result = reflector.Member <NoRepeateAttribute>(); Assert.Equal(typeof(Test).GetMember("NoRepeate")[0], result); }
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]); }
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]); }
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); } }
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); }
/// <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; } }
/// <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); }
/// <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()); }
public SqlModel(Type type) : this() { EntityType = type; _handler = new AttrOperator(type); }