mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- 增加 创建表时指定字段位置,如:[Column(Position = 1],可为负数即反方向位置;
This commit is contained in:
		@@ -126,6 +126,7 @@ namespace FreeSql.Internal
 | 
			
		||||
                if (trycol._IsVersion != null) attr._IsVersion = trycol.IsVersion;
 | 
			
		||||
                if (trycol._Uniques != null) attr._Uniques = trycol._Uniques;
 | 
			
		||||
                if (trycol.MapType != null) attr.MapType = trycol.MapType;
 | 
			
		||||
                if (trycol._Position != null) attr._Position = trycol.Position;
 | 
			
		||||
                if (trycol.DbDefautValue != null) attr.DbDefautValue = trycol.DbDefautValue;
 | 
			
		||||
            }
 | 
			
		||||
            var attrs = proto.GetCustomAttributes(typeof(ColumnAttribute), false);
 | 
			
		||||
@@ -143,6 +144,7 @@ namespace FreeSql.Internal
 | 
			
		||||
                if (tryattr._IsVersion != null) attr._IsVersion = tryattr.IsVersion;
 | 
			
		||||
                if (tryattr._Uniques != null) attr._Uniques = tryattr._Uniques;
 | 
			
		||||
                if (tryattr.MapType != null) attr.MapType = tryattr.MapType;
 | 
			
		||||
                if (tryattr._Position != null) attr._Position = tryattr.Position;
 | 
			
		||||
                if (tryattr.DbDefautValue != null) attr.DbDefautValue = tryattr.DbDefautValue;
 | 
			
		||||
            }
 | 
			
		||||
            ColumnAttribute ret = null;
 | 
			
		||||
@@ -156,6 +158,7 @@ namespace FreeSql.Internal
 | 
			
		||||
            if (attr._IsVersion != null) ret = attr;
 | 
			
		||||
            if (attr._Uniques != null) ret = attr;
 | 
			
		||||
            if (attr.MapType != null) ret = attr;
 | 
			
		||||
            if (attr._Position != null) ret = attr;
 | 
			
		||||
            if (attr.DbDefautValue != null) ret = attr;
 | 
			
		||||
            if (ret != null && ret.MapType == null) ret.MapType = proto.PropertyType;
 | 
			
		||||
            return ret;
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ namespace FreeSql.Internal.Model
 | 
			
		||||
        public Dictionary<string, ColumnInfo> Columns { get; set; } = new Dictionary<string, ColumnInfo>(StringComparer.CurrentCultureIgnoreCase);
 | 
			
		||||
        public Dictionary<string, ColumnInfo> ColumnsByCs { get; set; } = new Dictionary<string, ColumnInfo>(StringComparer.CurrentCultureIgnoreCase);
 | 
			
		||||
        public Dictionary<string, ColumnInfo> ColumnsByCsIgnore { get; set; } = new Dictionary<string, ColumnInfo>(StringComparer.CurrentCultureIgnoreCase);
 | 
			
		||||
        public ColumnInfo[] ColumnsByPosition { get; set; }
 | 
			
		||||
        public ColumnInfo[] Primarys { get; set; }
 | 
			
		||||
        public Dictionary<string, List<ColumnInfo>> Uniques { get; set; }
 | 
			
		||||
        public string CsName { get; set; }
 | 
			
		||||
 
 | 
			
		||||
@@ -70,6 +70,7 @@ namespace FreeSql.Internal
 | 
			
		||||
            var propsLazy = new List<(PropertyInfo, bool, bool)>();
 | 
			
		||||
            var propsNavObjs = new List<PropertyInfo>();
 | 
			
		||||
            var propsComment = CommonUtils.GetProperyCommentBySummary(entity);
 | 
			
		||||
            var columnsList = new List<ColumnInfo>();
 | 
			
		||||
            foreach (var p in trytb.Properties.Values)
 | 
			
		||||
            {
 | 
			
		||||
                var setMethod = trytb.Type.GetMethod($"set_{p.Name}");
 | 
			
		||||
@@ -169,6 +170,7 @@ namespace FreeSql.Internal
 | 
			
		||||
 | 
			
		||||
                trytb.Columns.Add(colattr.Name, col);
 | 
			
		||||
                trytb.ColumnsByCs.Add(p.Name, col);
 | 
			
		||||
                columnsList.Add(col);
 | 
			
		||||
            }
 | 
			
		||||
            trytb.VersionColumn = trytb.Columns.Values.Where(a => a.Attribute.IsVersion == true).LastOrDefault();
 | 
			
		||||
            if (trytb.VersionColumn != null)
 | 
			
		||||
@@ -241,6 +243,9 @@ namespace FreeSql.Internal
 | 
			
		||||
            }
 | 
			
		||||
            var allunique = trytb.Columns.Values.Where(a => a.Attribute._Uniques != null).SelectMany(a => a.Attribute._Uniques).Distinct();
 | 
			
		||||
            trytb.Uniques = allunique.ToDictionary(a => a, a => trytb.Columns.Values.Where(b => b.Attribute._Uniques != null && b.Attribute._Uniques.Contains(a)).ToList());
 | 
			
		||||
            trytb.ColumnsByPosition = columnsList.Where(a => a.Attribute.Position > 0).OrderBy(a => a.Attribute.Position)
 | 
			
		||||
                .Concat(columnsList.Where(a => a.Attribute.Position == 0))
 | 
			
		||||
                .Concat(columnsList.Where(a => a.Attribute.Position < 0).OrderBy(a => a.Attribute.Position)).ToArray();
 | 
			
		||||
            tbc.AddOrUpdate(entity, trytb, (oldkey, oldval) => trytb);
 | 
			
		||||
 | 
			
		||||
            #region 查找导航属性的关系、virtual 属性延时加载,动态产生新的重写类
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user