Skip to content

Commit

Permalink
https://github.com/linq2db/linq2db.LINQPad/pull/102
Browse files Browse the repository at this point in the history
  • Loading branch information
MaceWindu committed Mar 9, 2024
1 parent df34b64 commit f1d1bf5
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 8 deletions.
19 changes: 14 additions & 5 deletions Source/Drivers/DriverHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,26 @@ public static MappingSchema InitializeContext(IConnectionInfo cxInfo, IDataConte
// apply context-specific Linq To DB options
Common.Configuration.Linq.OptimizeJoins = settings.LinqToDB.OptimizeJoins;

// TODO: add OnTraceConnection to IDataContext
if (context is DataConnection dc)
{
dc.OnTraceConnection = GetSqlLogAction(executionManager);
DataConnection.TurnTraceSwitchOn();
}
else if (context is DataContext dctx)
{
dctx.OnTraceConnection = GetSqlLogAction(executionManager);
DataConnection.TurnTraceSwitchOn();
else
{
// Try to find a OnTraceConnection property in the custom context object
try
{
context.GetType().GetProperty("OnTraceConnection")?.SetValue(context, GetSqlLogAction(executionManager));
}
catch
{
// not our problem
}
}

DataConnection.TurnTraceSwitchOn();

return context.MappingSchema;

// Implements Linq To DB connection logging handler to feed SQL logs to LINQPad.
Expand Down
10 changes: 7 additions & 3 deletions Source/Drivers/StaticLinqToDBDriver.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Data;
using System.Data.Common;
using System.IO;
using LINQPad.Extensibility.DataContext;
using LinqToDB.Data;
using LinqToDB.Mapping;
Expand Down Expand Up @@ -105,7 +106,7 @@ public override object[] GetContextConstructorArguments(IConnectionInfo cxInfo)
/// <inheritdoc/>
public override void InitializeContext(IConnectionInfo cxInfo, object context, QueryExecutionManager executionManager)
{
_mappingSchema = DriverHelper.InitializeContext(cxInfo, (DataConnection)context, executionManager);
_mappingSchema = DriverHelper.InitializeContext(cxInfo, (IDataContext)context, executionManager);
}

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

private void TryLoadAppSettingsJson(string? appConfigPath)
{
if (appConfigPath?.EndsWith(".json", StringComparison.OrdinalIgnoreCase) == true)
if (string.IsNullOrWhiteSpace(appConfigPath) || !File.Exists(appConfigPath))
return;

if (appConfigPath!.EndsWith(".json", StringComparison.OrdinalIgnoreCase))
DataConnection.DefaultSettings = AppConfig.LoadJson(appConfigPath);
#if !NETFRAMEWORK
if (appConfigPath?.EndsWith(".config", StringComparison.OrdinalIgnoreCase) == true)
if (appConfigPath.EndsWith(".config", StringComparison.OrdinalIgnoreCase))
DataConnection.DefaultSettings = AppConfig.LoadAppConfig(appConfigPath);
#endif
}
Expand Down
1 change: 1 addition & 0 deletions release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
Issues fixed:

- [#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
- [#102](https://github.com/linq2db/linq2db.LINQPad/pull/102): support custom `IDataContext`-based contexts; don't try to load missing connection configuration files

# Release 5.1.0

Expand Down

0 comments on commit f1d1bf5

Please sign in to comment.