@@ -18,9 +18,13 @@ namespace _1RM.Service.DataSource.Model
1818{
1919 public abstract partial class DataSourceBase : NotifyPropertyChangedBase
2020 {
21- protected bool _isWritable = true ;
21+ private bool _isWritable = true ;
2222 [ JsonIgnore ]
23- public bool IsWritable => _isWritable ;
23+ public bool IsWritable
24+ {
25+ get => _isWritable ;
26+ protected set => SetAndNotifyIfChanged ( ref _isWritable , value ) ;
27+ }
2428
2529 /// <summary>
2630 /// 已缓存的服务器信息
@@ -97,7 +101,15 @@ public bool Database_OpenConnection(int connectTimeOutSeconds = 5)
97101 var dataBase = GetDataBase ( ) ;
98102 // open db or create db.
99103 Debug . Assert ( dataBase != null ) ;
100- dataBase . OpenNewConnection ( DatabaseType , GetConnectionString ( connectTimeOutSeconds ) ) ;
104+
105+ var connectionString = GetConnectionString ( connectTimeOutSeconds ) ;
106+ if ( connectionString != _lastConnectionString )
107+ {
108+ dataBase . CloseConnection ( ) ;
109+ _lastConnectionString = connectionString ;
110+ }
111+
112+ dataBase . OpenNewConnection ( DatabaseType , connectionString ) ;
101113 try
102114 {
103115 dataBase . InitTables ( ) ;
@@ -106,7 +118,7 @@ public bool Database_OpenConnection(int connectTimeOutSeconds = 5)
106118 {
107119 SimpleLogHelper . Warning ( e ) ;
108120 }
109- dataBase . OpenNewConnection ( DatabaseType , GetConnectionString ( connectTimeOutSeconds ) ) ;
121+ dataBase . OpenNewConnection ( DatabaseType , connectionString ) ;
110122 if ( dataBase . IsConnected ( ) )
111123 {
112124 if ( Status != EnumDbStatus . NotConnectedYet )
@@ -133,17 +145,26 @@ public virtual void Database_CloseConnection()
133145 dataBase . CloseConnection ( ) ;
134146 }
135147
148+
149+ private static string _lastConnectionString = "" ;
136150 public virtual EnumDbStatus Database_SelfCheck ( int connectTimeOutSeconds = 5 )
137151 {
138152 EnumDbStatus ret = EnumDbStatus . NotConnectedYet ;
139153 var dataBase = GetDataBase ( ) ;
140154
155+ var connectionString = GetConnectionString ( connectTimeOutSeconds ) ;
156+ if ( connectionString != _lastConnectionString )
157+ {
158+ dataBase . CloseConnection ( ) ;
159+ _lastConnectionString = connectionString ;
160+ }
161+
141162 // check connectable
142163 if ( dataBase . IsConnected ( ) == false )
143164 {
144165 try
145166 {
146- dataBase . OpenNewConnection ( DatabaseType , GetConnectionString ( connectTimeOutSeconds ) ) ;
167+ dataBase . OpenNewConnection ( DatabaseType , connectionString ) ;
147168 }
148169 catch ( Exception e )
149170 {
@@ -174,7 +195,7 @@ public virtual EnumDbStatus Database_SelfCheck(int connectTimeOutSeconds = 5)
174195 }
175196
176197 // check readable
177- _isWritable = dataBase . CheckWritable ( ) ;
198+ IsWritable = dataBase . CheckWritable ( ) ;
178199 var isReadable = dataBase . CheckReadable ( ) ;
179200 if ( isReadable == false )
180201 {
0 commit comments