Skip to content

Commit 5424581

Browse files
authored
Added linq2db.Compat project. (linq2db#4821)
1 parent fef3ae1 commit 5424581

16 files changed

+303
-12
lines changed

Directory.Packages.props

+7-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<!--
33
When multiple versions of same nuget references, don't put it to unconditional ItemGroup
44
as while it works fine in Visual Studio in general there are still issues with tooling (dotnet publish, testing)
5-
5+
66
IMPORTANT:
77
avoid use of different package versions in tests for different frameworks just for testing purposes if package referenced by source project
88
as it will result in old package consumed by released package and affect users (especially for projects where user has no control
@@ -155,10 +155,15 @@
155155

156156
<ItemGroup Label="Examples">
157157
<PackageVersion Include="linq2db.t4models" Version="6.0.0-preview.1" />
158-
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.1" />
159158
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="9.0.1" />
160159
<PackageVersion Include="OpenTelemetry" Version="1.11.1" />
161160
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.11.1" />
161+
<PackageVersion Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
162+
</ItemGroup>
163+
164+
<ItemGroup Label="Compat">
165+
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="8.0.1" Condition="'$(TargetFramework)'=='net6.0'"/>
166+
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="9.0.1" Condition="'$(TargetFramework)'!='net6.0'"/>
162167
</ItemGroup>
163168

164169
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<OutputType>Exe</OutputType>
4+
<TargetFrameworks>net462;net9.0;</TargetFrameworks>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<ProjectReference Include="..\..\..\Source\LinqToDB.Compat\LinqToDB.Compat.csproj" />
9+
10+
<PackageReference Include="System.Data.SQLite.Core" />
11+
<PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" />
12+
</ItemGroup>
13+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using System;
2+
using System.Linq;
3+
using System.Runtime.InteropServices;
4+
5+
using LinqToDB;
6+
using LinqToDB.Data;
7+
using LinqToDB.Configuration;
8+
9+
// Define a model
10+
public class Person
11+
{
12+
public int Id { get; set; }
13+
public string Name { get; set; } = null!;
14+
}
15+
16+
// Define a database context using SQLite in-memory database
17+
public class MyDatabase : DataConnection
18+
{
19+
public ITable<Person> People => this.GetTable<Person>();
20+
}
21+
22+
class Program
23+
{
24+
static void Main()
25+
{
26+
Console.WriteLine($".NET version : {Environment.Version}");
27+
Console.WriteLine($".NET Framework version: {RuntimeInformation.FrameworkDescription}");
28+
Console.WriteLine();
29+
30+
DataConnection.DefaultSettings = LinqToDBSection.Instance;
31+
32+
using var db = new MyDatabase();
33+
34+
// Create table on startup
35+
//
36+
db.CreateTable<Person>();
37+
38+
// Create a new person
39+
//
40+
db.Insert(new Person { Id = 1, Name = "John Doe" });
41+
42+
// Retrieve and print all people
43+
//
44+
var people = db.People.ToList();
45+
46+
foreach (var person in people)
47+
{
48+
Console.WriteLine($"ID: {person.Id}, Name: {person.Name}");
49+
}
50+
}
51+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
This example demonstrates how to configure **linq2db** using `app.config`.
2+
3+
# How to run
4+
5+
1. Build
6+
2. Run
7+
8+
# Compatibility
9+
10+
This project contains versions for **.NET Framework 4.6.2** and **.NET 9**.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<configuration>
3+
<configSections>
4+
<section name="linq2db" type="LinqToDB.Configuration.LinqToDBSection, linq2db.Compat" />
5+
</configSections>
6+
7+
<linq2db defaultConfiguration="SQLite" />
8+
9+
<connectionStrings>
10+
<add name="SQLite" connectionString="Data Source=:memory:;Version=3;New=True;" providerName="System.Data.SQLite" />
11+
<add name="SqlClient" connectionString="Data Source=remote_server;Initial Catalog=OtherDatabase;User Id=user;Password=pass;" providerName="System.Data.SqlClient" />
12+
</connectionStrings>
13+
</configuration>

Examples/Examples.sln

+43
Original file line numberDiff line numberDiff line change
@@ -54,56 +54,97 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LinqToDB.Tools", "..\Source
5454
EndProject
5555
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetryExample", "Metrics\OpenTelemetry\OpenTelemetryExample.csproj", "{067C3148-8524-4A43-A0CF-A5FE7BF68490}"
5656
EndProject
57+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Compat", "Compat", "{DEF6F780-8B16-4FAF-9220-773ADFBB945D}"
58+
EndProject
59+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigurationManager", "Compat\ConfigurationManager\ConfigurationManager.csproj", "{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}"
60+
EndProject
61+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LinqToDB.Compat", "..\Source\LinqToDB.Compat\LinqToDB.Compat.csproj", "{5449C55F-FF5D-4952-A621-CC798DE536C6}"
62+
EndProject
5763
Global
5864
GlobalSection(SolutionConfigurationPlatforms) = preSolution
65+
Azure|Any CPU = Azure|Any CPU
5966
Debug|Any CPU = Debug|Any CPU
6067
Release|Any CPU = Release|Any CPU
6168
EndGlobalSection
6269
GlobalSection(ProjectConfigurationPlatforms) = postSolution
70+
{D0274057-7196-4C66-9D54-D6F1FFC6F11B}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
71+
{D0274057-7196-4C66-9D54-D6F1FFC6F11B}.Azure|Any CPU.Build.0 = Azure|Any CPU
6372
{D0274057-7196-4C66-9D54-D6F1FFC6F11B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6473
{D0274057-7196-4C66-9D54-D6F1FFC6F11B}.Debug|Any CPU.Build.0 = Debug|Any CPU
6574
{D0274057-7196-4C66-9D54-D6F1FFC6F11B}.Release|Any CPU.ActiveCfg = Release|Any CPU
6675
{D0274057-7196-4C66-9D54-D6F1FFC6F11B}.Release|Any CPU.Build.0 = Release|Any CPU
76+
{8D06EAAE-23F0-44C5-8A2C-8DDD68173BB9}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
77+
{8D06EAAE-23F0-44C5-8A2C-8DDD68173BB9}.Azure|Any CPU.Build.0 = Azure|Any CPU
6778
{8D06EAAE-23F0-44C5-8A2C-8DDD68173BB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6879
{8D06EAAE-23F0-44C5-8A2C-8DDD68173BB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
6980
{8D06EAAE-23F0-44C5-8A2C-8DDD68173BB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
7081
{8D06EAAE-23F0-44C5-8A2C-8DDD68173BB9}.Release|Any CPU.Build.0 = Release|Any CPU
82+
{27C50F33-400B-414D-BDF6-B8E1F43A5CC6}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
83+
{27C50F33-400B-414D-BDF6-B8E1F43A5CC6}.Azure|Any CPU.Build.0 = Azure|Any CPU
7184
{27C50F33-400B-414D-BDF6-B8E1F43A5CC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7285
{27C50F33-400B-414D-BDF6-B8E1F43A5CC6}.Debug|Any CPU.Build.0 = Debug|Any CPU
7386
{27C50F33-400B-414D-BDF6-B8E1F43A5CC6}.Release|Any CPU.ActiveCfg = Release|Any CPU
7487
{27C50F33-400B-414D-BDF6-B8E1F43A5CC6}.Release|Any CPU.Build.0 = Release|Any CPU
88+
{F6BF5912-40EA-4EA0-BEAA-5FCC5BCEDE8F}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
89+
{F6BF5912-40EA-4EA0-BEAA-5FCC5BCEDE8F}.Azure|Any CPU.Build.0 = Azure|Any CPU
7590
{F6BF5912-40EA-4EA0-BEAA-5FCC5BCEDE8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
7691
{F6BF5912-40EA-4EA0-BEAA-5FCC5BCEDE8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
7792
{F6BF5912-40EA-4EA0-BEAA-5FCC5BCEDE8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
7893
{F6BF5912-40EA-4EA0-BEAA-5FCC5BCEDE8F}.Release|Any CPU.Build.0 = Release|Any CPU
94+
{875876C6-D790-4BA7-893C-5181977864A2}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
95+
{875876C6-D790-4BA7-893C-5181977864A2}.Azure|Any CPU.Build.0 = Azure|Any CPU
7996
{875876C6-D790-4BA7-893C-5181977864A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
8097
{875876C6-D790-4BA7-893C-5181977864A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
8198
{875876C6-D790-4BA7-893C-5181977864A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
8299
{875876C6-D790-4BA7-893C-5181977864A2}.Release|Any CPU.Build.0 = Release|Any CPU
100+
{FAD195CA-B6D8-4F15-B629-0BECA0245623}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
101+
{FAD195CA-B6D8-4F15-B629-0BECA0245623}.Azure|Any CPU.Build.0 = Azure|Any CPU
83102
{FAD195CA-B6D8-4F15-B629-0BECA0245623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
84103
{FAD195CA-B6D8-4F15-B629-0BECA0245623}.Debug|Any CPU.Build.0 = Debug|Any CPU
85104
{FAD195CA-B6D8-4F15-B629-0BECA0245623}.Release|Any CPU.ActiveCfg = Release|Any CPU
86105
{FAD195CA-B6D8-4F15-B629-0BECA0245623}.Release|Any CPU.Build.0 = Release|Any CPU
106+
{4899DD08-E70C-4EAF-84F4-44D6EA80C567}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
107+
{4899DD08-E70C-4EAF-84F4-44D6EA80C567}.Azure|Any CPU.Build.0 = Azure|Any CPU
87108
{4899DD08-E70C-4EAF-84F4-44D6EA80C567}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
88109
{4899DD08-E70C-4EAF-84F4-44D6EA80C567}.Debug|Any CPU.Build.0 = Debug|Any CPU
89110
{4899DD08-E70C-4EAF-84F4-44D6EA80C567}.Release|Any CPU.ActiveCfg = Release|Any CPU
90111
{4899DD08-E70C-4EAF-84F4-44D6EA80C567}.Release|Any CPU.Build.0 = Release|Any CPU
112+
{4AFDCBC9-29DF-459C-A470-94BCDBFD702F}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
113+
{4AFDCBC9-29DF-459C-A470-94BCDBFD702F}.Azure|Any CPU.Build.0 = Azure|Any CPU
91114
{4AFDCBC9-29DF-459C-A470-94BCDBFD702F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
92115
{4AFDCBC9-29DF-459C-A470-94BCDBFD702F}.Debug|Any CPU.Build.0 = Debug|Any CPU
93116
{4AFDCBC9-29DF-459C-A470-94BCDBFD702F}.Release|Any CPU.ActiveCfg = Release|Any CPU
94117
{4AFDCBC9-29DF-459C-A470-94BCDBFD702F}.Release|Any CPU.Build.0 = Release|Any CPU
118+
{8E19CD88-696F-42F0-8DAF-69D4FE502758}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
119+
{8E19CD88-696F-42F0-8DAF-69D4FE502758}.Azure|Any CPU.Build.0 = Azure|Any CPU
95120
{8E19CD88-696F-42F0-8DAF-69D4FE502758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
96121
{8E19CD88-696F-42F0-8DAF-69D4FE502758}.Debug|Any CPU.Build.0 = Debug|Any CPU
97122
{8E19CD88-696F-42F0-8DAF-69D4FE502758}.Release|Any CPU.ActiveCfg = Release|Any CPU
98123
{8E19CD88-696F-42F0-8DAF-69D4FE502758}.Release|Any CPU.Build.0 = Release|Any CPU
124+
{DC97914F-B88A-49B6-BCA9-2320704F1467}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
125+
{DC97914F-B88A-49B6-BCA9-2320704F1467}.Azure|Any CPU.Build.0 = Azure|Any CPU
99126
{DC97914F-B88A-49B6-BCA9-2320704F1467}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
100127
{DC97914F-B88A-49B6-BCA9-2320704F1467}.Debug|Any CPU.Build.0 = Debug|Any CPU
101128
{DC97914F-B88A-49B6-BCA9-2320704F1467}.Release|Any CPU.ActiveCfg = Release|Any CPU
102129
{DC97914F-B88A-49B6-BCA9-2320704F1467}.Release|Any CPU.Build.0 = Release|Any CPU
130+
{067C3148-8524-4A43-A0CF-A5FE7BF68490}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
131+
{067C3148-8524-4A43-A0CF-A5FE7BF68490}.Azure|Any CPU.Build.0 = Azure|Any CPU
103132
{067C3148-8524-4A43-A0CF-A5FE7BF68490}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
104133
{067C3148-8524-4A43-A0CF-A5FE7BF68490}.Debug|Any CPU.Build.0 = Debug|Any CPU
105134
{067C3148-8524-4A43-A0CF-A5FE7BF68490}.Release|Any CPU.ActiveCfg = Release|Any CPU
106135
{067C3148-8524-4A43-A0CF-A5FE7BF68490}.Release|Any CPU.Build.0 = Release|Any CPU
136+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
137+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}.Azure|Any CPU.Build.0 = Azure|Any CPU
138+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
139+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}.Debug|Any CPU.Build.0 = Debug|Any CPU
140+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}.Release|Any CPU.ActiveCfg = Release|Any CPU
141+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899}.Release|Any CPU.Build.0 = Release|Any CPU
142+
{5449C55F-FF5D-4952-A621-CC798DE536C6}.Azure|Any CPU.ActiveCfg = Azure|Any CPU
143+
{5449C55F-FF5D-4952-A621-CC798DE536C6}.Azure|Any CPU.Build.0 = Azure|Any CPU
144+
{5449C55F-FF5D-4952-A621-CC798DE536C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
145+
{5449C55F-FF5D-4952-A621-CC798DE536C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
146+
{5449C55F-FF5D-4952-A621-CC798DE536C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
147+
{5449C55F-FF5D-4952-A621-CC798DE536C6}.Release|Any CPU.Build.0 = Release|Any CPU
107148
EndGlobalSection
108149
GlobalSection(SolutionProperties) = preSolution
109150
HideSolutionNode = FALSE
@@ -122,6 +163,8 @@ Global
122163
{8E19CD88-696F-42F0-8DAF-69D4FE502758} = {F97CFE3B-CAF6-468C-8ECB-BEBAF7738D28}
123164
{DC97914F-B88A-49B6-BCA9-2320704F1467} = {03B313B1-C785-4FC9-A3C7-DE58295B7D20}
124165
{067C3148-8524-4A43-A0CF-A5FE7BF68490} = {F97CFE3B-CAF6-468C-8ECB-BEBAF7738D28}
166+
{D694ABE6-C6B5-4C3A-B651-D7207D0F1899} = {DEF6F780-8B16-4FAF-9220-773ADFBB945D}
167+
{5449C55F-FF5D-4952-A621-CC798DE536C6} = {03B313B1-C785-4FC9-A3C7-DE58295B7D20}
125168
EndGlobalSection
126169
GlobalSection(ExtensibilityGlobals) = postSolution
127170
SolutionGuid = {A26E409B-1097-4260-A7B2-9C8F09E0635D}

NuGet/linq2db.Compat.nuspec

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0"?>
2+
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
3+
<metadata>
4+
<id>linq2db.Compat</id>
5+
<title>LINQ to DB Compat</title>
6+
<description>LINQ to DB Tools provides additional services for Linq To DB library.</description>
7+
<tags></tags>
8+
<dependencies>
9+
<group targetFramework="net462">
10+
<dependency id="linq2db" version="6.0.0" />
11+
<dependency id="System.Configuration.ConfigurationManager" version="9.0.1" />
12+
</group>
13+
<group targetFramework="netstandard2.0">
14+
<dependency id="linq2db" version="6.0.0" />
15+
<dependency id="System.Configuration.ConfigurationManager" version="9.0.1" />
16+
</group>
17+
<group targetFramework="net6.0">
18+
<dependency id="linq2db" version="6.0.0" />
19+
<dependency id="System.Configuration.ConfigurationManager" version="9.0.1" />
20+
</group>
21+
<group targetFramework="net8.0">
22+
<dependency id="linq2db" version="6.0.0" />
23+
<dependency id="System.Configuration.ConfigurationManager" version="8.0.1" />
24+
</group>
25+
<group targetFramework="net9.0">
26+
<dependency id="linq2db" version="6.0.0" />
27+
<dependency id="System.Configuration.ConfigurationManager" version="9.0.1" />
28+
</group>
29+
</dependencies>
30+
</metadata>
31+
32+
<files>
33+
<file src="NuGet\..\Source\LinqToDB.Compat\README.md" target="README.md" />
34+
35+
<file src="bin\LinqToDB.Compat\{0}\net462\linq2db.Compat.pdb" target="lib\net462\" />
36+
<file src="bin\LinqToDB.Compat\{0}\net462\linq2db.Compat.xml" target="lib\net462\" />
37+
<file src="bin\LinqToDB.Compat\{0}\net462\linq2db.Compat.dll" target="lib\net462\" />
38+
<file src="bin\LinqToDB.Compat\{0}\netstandard2.0\linq2db.Compat.pdb" target="lib\netstandard2.0\" />
39+
<file src="bin\LinqToDB.Compat\{0}\netstandard2.0\linq2db.Compat.xml" target="lib\netstandard2.0\" />
40+
<file src="bin\LinqToDB.Compat\{0}\netstandard2.0\linq2db.Compat.dll" target="lib\netstandard2.0\" />
41+
<file src="bin\LinqToDB.Compat\{0}\net6.0\linq2db.Compat.pdb" target="lib\net6.0\" />
42+
<file src="bin\LinqToDB.Compat\{0}\net6.0\linq2db.Compat.xml" target="lib\net6.0\" />
43+
<file src="bin\LinqToDB.Compat\{0}\net6.0\linq2db.Compat.dll" target="lib\net6.0\" />
44+
<file src="bin\LinqToDB.Compat\{0}\net8.0\linq2db.Compat.pdb" target="lib\net8.0\" />
45+
<file src="bin\LinqToDB.Compat\{0}\net8.0\linq2db.Compat.xml" target="lib\net8.0\" />
46+
<file src="bin\LinqToDB.Compat\{0}\net8.0\linq2db.Compat.dll" target="lib\net8.0\" />
47+
<file src="bin\LinqToDB.Compat\{0}\net9.0\linq2db.Compat.pdb" target="lib\net9.0\" />
48+
<file src="bin\LinqToDB.Compat\{0}\net9.0\linq2db.Compat.xml" target="lib\net9.0\" />
49+
<file src="bin\LinqToDB.Compat\{0}\net9.0\linq2db.Compat.dll" target="lib\net9.0\" />
50+
</files>
51+
</package>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<AssemblyName>linq2db.Compat</AssemblyName>
4+
<RootNamespace>LinqToDB</RootNamespace>
5+
6+
<DocumentationFile>$(ArtifactsPath)\bin\$(MSBuildProjectName)\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
7+
8+
<!--published targets-->
9+
<TargetFrameworks>net462;netstandard2.0;net6.0;net8.0;net9.0</TargetFrameworks>
10+
11+
<!-- Define COMPAT constant -->
12+
<DefineConstants>$(DefineConstants);COMPAT</DefineConstants>
13+
</PropertyGroup>
14+
15+
<ItemGroup>
16+
<ProjectReference Include="..\LinqToDB\LinqToDB.csproj" />
17+
18+
<PackageReference Include="System.Configuration.ConfigurationManager" />
19+
20+
<AdditionalFiles Include="PublicAPI.*.txt" />
21+
22+
<Compile Include="..\LinqToDB\Configuration\LinqToDBSection.cs" Link="LinqToDBSection.cs" />
23+
<Compile Include="..\LinqToDB\Configuration\DataProviderElementCollection.cs" Link="DataProviderElementCollection.cs" />
24+
<Compile Include="..\LinqToDB\Configuration\DataProviderElement.cs" Link="DataProviderElement.cs" />
25+
<Compile Include="..\LinqToDB\Configuration\ElementBase.cs" Link="ElementBase.cs" />
26+
<Compile Include="..\LinqToDB\Configuration\ElementCollectionBase.cs" Link="ElementCollectionBase.cs" />
27+
</ItemGroup>
28+
</Project>

Source/LinqToDB.Compat/README.md

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# LINQ to DB Compat
2+
3+
**linq2db.Compat** is an additional package that ensures compatibility of **linq2db** with applications using configuration via `System.Configuration.ConfigurationManager` (classic `app.config`/`web.config`).
4+
5+
## 📦 Installation
6+
7+
You can install the package via NuGet:
8+
9+
### Using NuGet Package Manager Console:
10+
```sh
11+
Install-Package linq2db.Compat
12+
```
13+
14+
### Using .NET CLI:
15+
```sh
16+
dotnet add package linq2db.Compat
17+
```
18+
19+
### Using PackageReference in `csproj`:
20+
Add the following line inside the `<ItemGroup>` section of your `.csproj` file:
21+
```xml
22+
<PackageReference Include="linq2db.Compat" Version="*" />
23+
```
24+
25+
## 🚀 Usage
26+
27+
This package allows using connection settings from `System.Configuration.ConfigurationManager`. To initialize linq2db with settings from `app.config` or `web.config`, add the following code:
28+
29+
```csharp
30+
using LinqToDB;
31+
using LinqToDB.Configuration;
32+
33+
DataConnection.DefaultSettings = LinqToDBSection.Instance;
34+
```
35+
36+
### 📌 Example `app.config`:
37+
38+
```xml
39+
<configuration>
40+
<configSections>
41+
<section name="linq2db" type="LinqToDB.Configuration.LinqToDBSection, linq2db.Compat" />
42+
</configSections>
43+
44+
<linq2db defaultConfiguration="DefaultConnection" />
45+
46+
<connectionStrings>
47+
<add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True" providerName="System.Data.SqlClient" />
48+
<add name="SecondaryConnection" connectionString="Data Source=remote_server;Initial Catalog=OtherDatabase;User Id=user;Password=pass;" providerName="System.Data.SqlClient" />
49+
</connectionStrings>
50+
</configuration>
51+
```
52+
53+
## 🎯 Compatibility
54+
55+
This package is designed to support applications using `System.Configuration.ConfigurationManager` for linq2db configuration (classic `app.config`/`web.config`).
56+
57+
## 📜 License
58+
59+
This project is distributed under the [MIT](https://github.com/linq2db/linq2db/blob/master/MIT-LICENSE.txt) license.

Source/LinqToDB/Configuration/DataProviderElement.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
#if NETFRAMEWORK
1+
#if NETFRAMEWORK && COMPAT
2+
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(LinqToDB.Configuration.DataProviderElement))]
3+
#elif NETFRAMEWORK || COMPAT
4+
using System;
25
using System.Collections.Generic;
36
using System.Configuration;
47
using System.Linq;
@@ -42,10 +45,8 @@ public DataProviderElement()
4245
/// </summary>
4346
public bool Default => (bool)base[_propDefault];
4447

45-
IEnumerable<NamedValue> IDataProviderSettings.Attributes
46-
{
47-
get => Attributes.AllKeys.Select(e => new NamedValue() { Name = e, Value = Attributes[e] });
48-
}
48+
IEnumerable<NamedValue> IDataProviderSettings.Attributes =>
49+
Attributes.AllKeys.Select(e => new NamedValue { Name = e ?? string.Empty, Value = Attributes[e ?? string.Empty] ?? string.Empty });
4950
}
5051
}
5152
#endif

Source/LinqToDB/Configuration/DataProviderElementCollection.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
#if NETFRAMEWORK
1+
#if NETFRAMEWORK && COMPAT
2+
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(LinqToDB.Configuration.DataProviderElementCollection))]
3+
#elif NETFRAMEWORK || COMPAT
24
using System;
35
using System.Configuration;
46

0 commit comments

Comments
 (0)