Skip to content

Commit 84dda26

Browse files
committed
StorageDriver: connection info and init sql values are based on storage node
1 parent 1c510b1 commit 84dda26

2 files changed

Lines changed: 30 additions & 5 deletions

File tree

Orm/Xtensive.Orm/Orm/Providers/StorageDriver.Operations.cs

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,15 @@ public SqlConnection CreateConnection(Session session)
4444
}
4545

4646
var sessionConfiguration = GetConfiguration(session);
47-
if (sessionConfiguration.ConnectionInfo!=null)
48-
connection.ConnectionInfo = sessionConfiguration.ConnectionInfo;
4947
connection.CommandTimeout = sessionConfiguration.DefaultCommandTimeout;
48+
var connectionInfo = GetConnectionInfo(session) ?? sessionConfiguration.ConnectionInfo;
49+
if (connectionInfo != null) {
50+
connection.ConnectionInfo = connectionInfo;
51+
}
5052

51-
if (!string.IsNullOrEmpty(configuration.ConnectionInitializationSql))
52-
SetInitializationSql(connection, configuration.ConnectionInitializationSql);
53+
var connectionInitializationSql = GetInitializationSql(session) ?? configuration.ConnectionInitializationSql;
54+
if (!string.IsNullOrEmpty(connectionInitializationSql))
55+
SetInitializationSql(connection, connectionInitializationSql);
5356

5457
return connection;
5558
}
@@ -339,7 +342,23 @@ private void SetInitializationSql(SqlConnection connection, string script)
339342

340343
private SessionConfiguration GetConfiguration(Session session)
341344
{
342-
return session!=null ? session.Configuration : configuration.Sessions.System;
345+
return session != null ? session.Configuration : configuration.Sessions.System;
346+
}
347+
348+
private ConnectionInfo GetConnectionInfo(Session session)
349+
{
350+
return session == null
351+
? null
352+
: session.GetStorageNodeInternal()?.Configuration.ConnectionInfo
353+
?? session.Configuration.ConnectionInfo;
354+
}
355+
356+
private string GetInitializationSql(Session session)
357+
{
358+
return session == null || session.GetStorageNodeInternal() == null
359+
|| string.IsNullOrEmpty(session.GetStorageNodeInternal().Configuration.ConnectionInitializationSql)
360+
? null
361+
: session.StorageNode.Configuration.ConnectionInitializationSql;
343362
}
344363
}
345364
}

Orm/Xtensive.Orm/Orm/Session.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,12 @@ internal void SetStorageNode(StorageNode node)
302302
storageNode = node;
303303
}
304304

305+
// gets node directly
306+
internal StorageNode GetStorageNodeInternal()
307+
{
308+
return storageNode;
309+
}
310+
305311
public ExecutableProvider Compile(CompilableProvider provider)
306312
{
307313
return CompilationService.Compile(provider, CompilationService.CreateConfiguration(this));

0 commit comments

Comments
 (0)