mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 01:05:27 +08:00 
			
		
		
		
	- fix string[] UseJsonMap bug;#653
This commit is contained in:
		@@ -312,6 +312,11 @@ namespace base_entity
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            public DateTime Date { get; set; }
 | 
					            public DateTime Date { get; set; }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        record TestClass(string Name)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            public Guid Id { get; set; }
 | 
				
			||||||
 | 
					            public string[] Tags { get; init; } = Array.Empty<string>();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        static void Main(string[] args)
 | 
					        static void Main(string[] args)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            #region 初始化 IFreeSql
 | 
					            #region 初始化 IFreeSql
 | 
				
			||||||
@@ -361,6 +366,23 @@ namespace base_entity
 | 
				
			|||||||
            BaseEntity.Initialization(fsql, () => _asyncUow.Value);
 | 
					            BaseEntity.Initialization(fsql, () => _asyncUow.Value);
 | 
				
			||||||
            #endregion
 | 
					            #endregion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fsql.UseJsonMap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fsql.CodeFirst.ConfigEntity<TestClass>(cf =>
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
						            cf.Property(p => p.Name).IsNullable(false);
 | 
				
			||||||
 | 
						            cf.Property(p => p.Tags).JsonMap();
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fsql.Insert(new TestClass("test 1")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Tags = new[] { "a", "b" },
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					            .ExecuteAffrows();
 | 
				
			||||||
 | 
					            var records = fsql.Queryable<TestClass>().ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            InitData();
 | 
					            InitData();
 | 
				
			||||||
            InitData();
 | 
					            InitData();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -800,5 +800,14 @@
 | 
				
			|||||||
            <param name="that"></param>
 | 
					            <param name="that"></param>
 | 
				
			||||||
            <returns></returns>
 | 
					            <returns></returns>
 | 
				
			||||||
        </member>
 | 
					        </member>
 | 
				
			||||||
 | 
					        <member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
 | 
				
			||||||
 | 
					            <summary>
 | 
				
			||||||
 | 
					            批量注入 Repository,可以参考代码自行调整
 | 
				
			||||||
 | 
					            </summary>
 | 
				
			||||||
 | 
					            <param name="services"></param>
 | 
				
			||||||
 | 
					            <param name="globalDataFilter"></param>
 | 
				
			||||||
 | 
					            <param name="assemblies"></param>
 | 
				
			||||||
 | 
					            <returns></returns>
 | 
				
			||||||
 | 
					        </member>
 | 
				
			||||||
    </members>
 | 
					    </members>
 | 
				
			||||||
</doc>
 | 
					</doc>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2018,9 +2018,9 @@ namespace FreeSql.Internal
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            var returnTarget = Expression.Label(typeof(object));
 | 
					            var returnTarget = Expression.Label(typeof(object));
 | 
				
			||||||
            var valueExp = Expression.Variable(typeof(object), "locvalue");
 | 
					            var valueExp = Expression.Variable(typeof(object), "locvalue");
 | 
				
			||||||
            Func<Expression> funcGetExpression = () =>
 | 
					            Expression LocalFuncGetExpression(bool ignoreArray = false)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (type.IsArray)
 | 
					                if (!ignoreArray && type.IsArray)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    switch (type.FullName)
 | 
					                    switch (type.FullName)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -2059,6 +2059,9 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                    return Expression.IfThenElse(
 | 
					                    return Expression.IfThenElse(
 | 
				
			||||||
                        Expression.TypeEqual(valueExp, type),
 | 
					                        Expression.TypeEqual(valueExp, type),
 | 
				
			||||||
                        Expression.Return(returnTarget, valueExp),
 | 
					                        Expression.Return(returnTarget, valueExp),
 | 
				
			||||||
 | 
					                        Expression.IfThenElse(
 | 
				
			||||||
 | 
					                            Expression.TypeEqual(valueExp, typeof(string)), //JSON
 | 
				
			||||||
 | 
					                            LocalFuncGetExpression(true),
 | 
				
			||||||
                            Expression.Block(
 | 
					                            Expression.Block(
 | 
				
			||||||
                                new[] { arrNewExp, arrExp, arrLenExp, arrXExp, arrReadValExp },
 | 
					                                new[] { arrNewExp, arrExp, arrLenExp, arrXExp, arrReadValExp },
 | 
				
			||||||
                                Expression.Assign(arrExp, Expression.TypeAs(valueExp, typeof(Array))),
 | 
					                                Expression.Assign(arrExp, Expression.TypeAs(valueExp, typeof(Array))),
 | 
				
			||||||
@@ -2087,6 +2090,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                                ),
 | 
					                                ),
 | 
				
			||||||
                                Expression.Return(returnTarget, arrNewExp)
 | 
					                                Expression.Return(returnTarget, arrNewExp)
 | 
				
			||||||
                            )
 | 
					                            )
 | 
				
			||||||
 | 
					                        )
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                var typeOrg = type;
 | 
					                var typeOrg = type;
 | 
				
			||||||
@@ -2387,7 +2391,7 @@ namespace FreeSql.Internal
 | 
				
			|||||||
                        Expression.Equal(valueExp, Expression.Constant(DBNull.Value))
 | 
					                        Expression.Equal(valueExp, Expression.Constant(DBNull.Value))
 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                    Expression.Return(returnTarget, Expression.Convert(Expression.Default(type), typeof(object))),
 | 
					                    Expression.Return(returnTarget, Expression.Convert(Expression.Default(type), typeof(object))),
 | 
				
			||||||
                    funcGetExpression()
 | 
					                    LocalFuncGetExpression()
 | 
				
			||||||
                ),
 | 
					                ),
 | 
				
			||||||
                Expression.Label(returnTarget, Expression.Default(typeof(object)))
 | 
					                Expression.Label(returnTarget, Expression.Default(typeof(object)))
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user