Skip to content

Commit f1d1bf5

Browse files
committed
https://github.com/linq2db/linq2db.LINQPad/pull/102
1 parent df34b64 commit f1d1bf5

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

Source/Drivers/DriverHelper.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,17 +99,26 @@ public static MappingSchema InitializeContext(IConnectionInfo cxInfo, IDataConte
9999
// apply context-specific Linq To DB options
100100
Common.Configuration.Linq.OptimizeJoins = settings.LinqToDB.OptimizeJoins;
101101

102+
// TODO: add OnTraceConnection to IDataContext
102103
if (context is DataConnection dc)
103-
{
104104
dc.OnTraceConnection = GetSqlLogAction(executionManager);
105-
DataConnection.TurnTraceSwitchOn();
106-
}
107105
else if (context is DataContext dctx)
108-
{
109106
dctx.OnTraceConnection = GetSqlLogAction(executionManager);
110-
DataConnection.TurnTraceSwitchOn();
107+
else
108+
{
109+
// Try to find a OnTraceConnection property in the custom context object
110+
try
111+
{
112+
context.GetType().GetProperty("OnTraceConnection")?.SetValue(context, GetSqlLogAction(executionManager));
113+
}
114+
catch
115+
{
116+
// not our problem
117+
}
111118
}
112119

120+
DataConnection.TurnTraceSwitchOn();
121+
113122
return context.MappingSchema;
114123

115124
// Implements Linq To DB connection logging handler to feed SQL logs to LINQPad.

Source/Drivers/StaticLinqToDBDriver.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Data;
22
using System.Data.Common;
3+
using System.IO;
34
using LINQPad.Extensibility.DataContext;
45
using LinqToDB.Data;
56
using LinqToDB.Mapping;
@@ -105,7 +106,7 @@ public override object[] GetContextConstructorArguments(IConnectionInfo cxInfo)
105106
/// <inheritdoc/>
106107
public override void InitializeContext(IConnectionInfo cxInfo, object context, QueryExecutionManager executionManager)
107108
{
108-
_mappingSchema = DriverHelper.InitializeContext(cxInfo, (DataConnection)context, executionManager);
109+
_mappingSchema = DriverHelper.InitializeContext(cxInfo, (IDataContext)context, executionManager);
109110
}
110111

111112
/// <inheritdoc/>
@@ -137,10 +138,13 @@ public override void PreprocessObjectToWrite(ref object objectToWrite, ObjectGra
137138

138139
private void TryLoadAppSettingsJson(string? appConfigPath)
139140
{
140-
if (appConfigPath?.EndsWith(".json", StringComparison.OrdinalIgnoreCase) == true)
141+
if (string.IsNullOrWhiteSpace(appConfigPath) || !File.Exists(appConfigPath))
142+
return;
143+
144+
if (appConfigPath!.EndsWith(".json", StringComparison.OrdinalIgnoreCase))
141145
DataConnection.DefaultSettings = AppConfig.LoadJson(appConfigPath);
142146
#if !NETFRAMEWORK
143-
if (appConfigPath?.EndsWith(".config", StringComparison.OrdinalIgnoreCase) == true)
147+
if (appConfigPath.EndsWith(".config", StringComparison.OrdinalIgnoreCase))
144148
DataConnection.DefaultSettings = AppConfig.LoadAppConfig(appConfigPath);
145149
#endif
146150
}

release-notes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
Issues fixed:
44

55
- [#97](https://github.com/linq2db/linq2db.LINQPad/pull/97), [#103](https://github.com/linq2db/linq2db.LINQPad/pull/103): update dependencies to get rid of vulnerable transient dependencies
6+
- [#102](https://github.com/linq2db/linq2db.LINQPad/pull/102): support custom `IDataContext`-based contexts; don't try to load missing connection configuration files
67

78
# Release 5.1.0
89

0 commit comments

Comments
 (0)