- 修复 JsonMap 与导航属性的联表查询报错的 bug;#996

This commit is contained in:
2881099 2022-01-05 12:35:44 +08:00
parent 9fc91f1501
commit 3a453d918d

View File

@ -14,6 +14,7 @@ public static class FreeSqlJsonMapCoreExtensions
static MethodInfo MethodJsonConvertDeserializeObject = typeof(JsonConvert).GetMethod("DeserializeObject", new[] { typeof(string), typeof(Type) }); static MethodInfo MethodJsonConvertDeserializeObject = typeof(JsonConvert).GetMethod("DeserializeObject", new[] { typeof(string), typeof(Type) });
static MethodInfo MethodJsonConvertSerializeObject = typeof(JsonConvert).GetMethod("SerializeObject", new[] { typeof(object), typeof(JsonSerializerSettings) }); static MethodInfo MethodJsonConvertSerializeObject = typeof(JsonConvert).GetMethod("SerializeObject", new[] { typeof(object), typeof(JsonSerializerSettings) });
static ConcurrentDictionary<Type, ConcurrentDictionary<string, bool>> _dicJsonMapFluentApi = new ConcurrentDictionary<Type, ConcurrentDictionary<string, bool>>(); static ConcurrentDictionary<Type, ConcurrentDictionary<string, bool>> _dicJsonMapFluentApi = new ConcurrentDictionary<Type, ConcurrentDictionary<string, bool>>();
static object _concurrentObj = new object();
public static ColumnFluent JsonMap(this ColumnFluent col) public static ColumnFluent JsonMap(this ColumnFluent col)
{ {
@ -52,6 +53,9 @@ public static class FreeSqlJsonMapCoreExtensions
e.ModifyResult.StringLength = -2; e.ModifyResult.StringLength = -2;
if (_dicTypes.TryAdd(e.Property.PropertyType, true)) if (_dicTypes.TryAdd(e.Property.PropertyType, true))
{ {
lock (_concurrentObj)
{
FreeSql.Internal.Utils.dicExecuteArrayRowReadClassOrTuple[e.Property.PropertyType] = true;
FreeSql.Internal.Utils.GetDataReaderValueBlockExpressionObjectToStringIfThenElse.Add((LabelTarget returnTarget, Expression valueExp, Expression elseExp, Type type) => FreeSql.Internal.Utils.GetDataReaderValueBlockExpressionObjectToStringIfThenElse.Add((LabelTarget returnTarget, Expression valueExp, Expression elseExp, Type type) =>
{ {
return Expression.IfThenElse( return Expression.IfThenElse(
@ -61,6 +65,7 @@ public static class FreeSqlJsonMapCoreExtensions
}); });
} }
} }
}
}; };
} }
} }