diff --git a/FreeSql/FreeSqlBuilder.cs b/FreeSql/FreeSqlBuilder.cs
index 3c3719ac..37fad903 100644
--- a/FreeSql/FreeSqlBuilder.cs
+++ b/FreeSql/FreeSqlBuilder.cs
@@ -11,6 +11,7 @@ using System.Linq.Expressions;
using System.Runtime;
using FreeSql.Internal.Model.Interface;
using System.Threading;
+using FreeSql.Internal.Model;
namespace FreeSql
{
@@ -50,6 +51,18 @@ namespace FreeSql
_providerType = providerType;
return this;
}
+
+ ///
+ /// 用于指定自定义实现TableEntiy 的缓存集合
+ /// 解决多实例下相同类型映射到不同表的问题
+ ///
+ ///
+ ///
+ public FreeSqlBuilder UseCustomTableEntityCacheFactory(Func>> factory)
+ {
+ Utils.ChacheTableEntityFactory = factory;
+ return this;
+ }
///
/// 使用原始连接池(ado.net、odbc、oledb)
/// 默认:false
@@ -63,7 +76,7 @@ namespace FreeSql
///
public FreeSqlBuilder UseAdoConnectionPool(bool value)
{
- _isAdoConnectionPool = value ;
+ _isAdoConnectionPool = value;
return this;
}
///
@@ -577,7 +590,8 @@ namespace FreeSql
{
FreeSql.Internal.Utils.GetDataReaderValueBlockExpressionSwitchTypeFullName.Add((LabelTarget returnTarget, Expression valueExp, Type type2) =>
{
- if (FreeSql.Internal.Utils.TypeHandlers.TryGetValue(type2, out var typeHandler)) {
+ if (FreeSql.Internal.Utils.TypeHandlers.TryGetValue(type2, out var typeHandler))
+ {
var valueExpRet = Expression.Call(
Expression.Constant(typeHandler, typeof(ITypeHandler)),
typeof(ITypeHandler).GetMethod(nameof(typeHandler.Deserialize)),