Skip to content

Commit 0f9e695

Browse files
authored
add new option (#91)
1 parent a4f13c3 commit 0f9e695

File tree

9 files changed

+85
-20
lines changed

9 files changed

+85
-20
lines changed

Build/azure-pipelines.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
variables:
22
solution: 'linq2db.LINQPad.sln'
33
build_configuration: 'Release'
4-
assemblyVersion: 5.0.0.0
5-
nugetVersion: 5.0.0
6-
nugetDevVersion: 5.0.1
7-
nugetPRVersion: 5.0.1
4+
assemblyVersion: 5.1.0.0
5+
nugetVersion: 5.1.0
6+
nugetDevVersion: 5.1.1
7+
nugetPRVersion: 5.1.1
88
artifact_lpx: 'lpx'
99
artifact_lpx6: 'lpx6'
1010
artifact_nuget: 'nuget'

Build/linq2db.LINQPad.nuspec

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,27 @@
1111
<readme>README.md</readme>
1212
<dependencies>
1313
<group targetFramework="net6.0">
14-
<dependency id="linq2db" version="5.1.1" />
15-
<dependency id="linq2db.Tools" version="5.1.1" />
14+
<dependency id="linq2db" version="5.2.2" />
15+
<dependency id="linq2db.Tools" version="5.2.2" />
1616

1717
<dependency id="LINQPad.Reference" version="1.3.0" />
1818

1919
<dependency id="System.Configuration.ConfigurationManager" version="7.0.0" />
20-
<dependency id="Microsoft.CodeAnalysis.CSharp" version="4.5.0" />
20+
<dependency id="Microsoft.CodeAnalysis.CSharp" version="4.6.0" />
2121
<dependency id="System.Text.Json" version="7.0.2" />
2222

2323
<dependency id="FirebirdSql.Data.FirebirdClient" version="9.1.1" />
24-
<dependency id="MySqlConnector" version="2.2.5" />
24+
<dependency id="MySqlConnector" version="2.2.6" />
2525
<dependency id="AdoNetCore.AseClient" version="0.19.2" />
2626
<dependency id="System.Data.SQLite.Core" version="1.0.117" />
2727
<dependency id="Microsoft.Data.SqlClient" version="5.1.1" />
2828
<dependency id="Microsoft.SqlServer.Types" version="160.1000.6" />
2929
<dependency id="System.Data.Odbc" version="7.0.0" />
3030
<dependency id="System.Data.OleDb" version="7.0.0" />
31-
<dependency id="Npgsql" version="7.0.2" />
31+
<dependency id="Npgsql" version="7.0.4" />
3232
<dependency id="Oracle.ManagedDataAccess.Core" version="3.21.100" />
33-
<dependency id="Net.IBM.Data.Db2" version="6.0.0.300" />
34-
<dependency id="ClickHouse.Client" version="6.5.2" />
33+
<dependency id="Net.IBM.Data.Db2" version="7.0.0.200" />
34+
<dependency id="ClickHouse.Client" version="6.6.0" />
3535
<dependency id="Octonica.ClickHouseClient" version="2.2.9" />
3636
<!--<dependency id="linq2db4iSeries" version="4.3.0" />-->
3737
</group>

Directory.Packages.props

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<Project>
22
<ItemGroup>
3-
<PackageVersion Include="linq2db" Version="5.1.1" />
4-
<PackageVersion Include="linq2db.Tools" Version="5.1.1" />
3+
<PackageVersion Include="linq2db" Version="5.2.2" />
4+
<PackageVersion Include="linq2db.Tools" Version="5.2.2" />
55

66
<PackageVersion Include="LINQPad.Reference" Version="1.3.0" />
77

8-
<PackageVersion Include="PolySharp" Version="1.13.1" />
8+
<PackageVersion Include="PolySharp" Version="1.13.2" />
99

10-
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" />
10+
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.6.0" />
1111
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
1212
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
1313
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
@@ -19,16 +19,16 @@
1919
<PackageVersion Include="System.Data.SQLite.Core" Version="1.0.117" />
2020
<PackageVersion Include="System.Data.Odbc" Version="7.0.0" />
2121
<PackageVersion Include="System.Data.OleDb" Version="7.0.0" />
22-
<PackageVersion Include="MySqlConnector" Version="2.2.5" />
22+
<PackageVersion Include="MySqlConnector" Version="2.2.6" />
2323
<PackageVersion Include="AdoNetCore.AseClient" Version="0.19.2" />
2424
<PackageVersion Include="IBM.Data.DB.Provider" Version="11.5.5010.4" GeneratePathProperty="true" />
2525
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.1.1" />
2626
<PackageVersion Include="Oracle.ManagedDataAccess" Version="21.10.0" />
2727
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="3.21.100" />
28-
<PackageVersion Include="Net.IBM.Data.Db2" Version="6.0.0.300" />
29-
<PackageVersion Include="ClickHouse.Client" Version="6.5.2" />
28+
<PackageVersion Include="Net.IBM.Data.Db2" Version="7.0.0.200" />
29+
<PackageVersion Include="ClickHouse.Client" Version="6.6.0" />
3030
<PackageVersion Include="FirebirdSql.Data.FirebirdClient" Version="9.1.1" />
31-
<PackageVersion Include="Npgsql" Version="7.0.2" />
31+
<PackageVersion Include="Npgsql" Version="7.0.4" />
3232
<PackageVersion Include="Octonica.ClickHouseClient" Version="2.2.9" />
3333
<!--<PackageVersion Include="linq2db4iSeries" Version="5.1.0" />-->
3434

Source/Configuration/ConnectionSettings.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,9 @@ public static ConnectionSettings Load(IConnectionInfo cxInfo)
166166
// old provider name option replaced with two options: database and database provider
167167
settings.Connection.Provider = GetString(cxInfo, ProviderName);
168168

169+
// used to distinguish new connection dialog from migration
170+
var isNew = settings.Connection.Provider == null;
171+
169172
// this native oracle provider was removed long time ago and not supported in v5 too
170173
if (settings.Connection.Provider == PN.OracleNative)
171174
settings.Connection.Provider = PN.OracleManaged;
@@ -257,6 +260,9 @@ or PN.SqlServer
257260
// 10. CustomConfiguration migration
258261
settings.StaticContext.ConfigurationName = GetString(cxInfo, CustomConfiguration);
259262

263+
// https://github.com/linq2db/linq2db.LINQPad/issues/89
264+
settings.Scaffold.AsIsNames = !isNew;
265+
260266
// ignored options:
261267
// UseCustomFormatter - removed in v5
262268
// NormalizeNames - not used in pre-v5 and v5 (never used?)
@@ -490,6 +496,12 @@ public sealed class ScaffoldOptions
490496
/// </summary>
491497
[JsonIgnore]
492498
public bool Capitalize { get; set; }
499+
500+
/// <summary>
501+
/// When set, default database object name normalization rules disabled (except modification set
502+
/// by <see cref="Pluralize"/> and <see cref="Capitalize"/> options).
503+
/// </summary>
504+
public bool AsIsNames { get; set; }
493505
}
494506

495507
public sealed class LinqToDbOptions

Source/Drivers/DynamicSchemaGenerator.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,48 @@ private static ScaffoldOptions GetOptions(ConnectionSettings settings, string? c
4242
//options.Schema.EnableSqlServerReturnValue = true;
4343

4444
// set data model options
45+
if (settings.Scaffold.AsIsNames)
46+
{
47+
// https://github.com/linq2db/linq2db.LINQPad/issues/89
48+
// reset naming options for some objects:
49+
// - entities
50+
// - context properties
51+
// - columns
52+
// more could be added later on request
53+
options.DataModel.EntityClassNameOptions.Casing = NameCasing.None;
54+
options.DataModel.EntityClassNameOptions.Pluralization = Pluralization.None;
55+
options.DataModel.EntityClassNameOptions.Transformation = NameTransformation.None;
56+
options.DataModel.EntityClassNameOptions.DontCaseAllCaps = true;
57+
options.DataModel.EntityClassNameOptions.PluralizeOnlyIfLastWordIsText = false;
58+
59+
options.DataModel.EntityContextPropertyNameOptions.Casing = NameCasing.None;
60+
options.DataModel.EntityContextPropertyNameOptions.Pluralization = Pluralization.None;
61+
options.DataModel.EntityContextPropertyNameOptions.Transformation = NameTransformation.None;
62+
options.DataModel.EntityContextPropertyNameOptions.DontCaseAllCaps = true;
63+
options.DataModel.EntityContextPropertyNameOptions.PluralizeOnlyIfLastWordIsText = false;
64+
65+
options.DataModel.EntityColumnPropertyNameOptions.Casing = NameCasing.None;
66+
options.DataModel.EntityColumnPropertyNameOptions.Pluralization = Pluralization.None;
67+
options.DataModel.EntityColumnPropertyNameOptions.Transformation = NameTransformation.None;
68+
options.DataModel.EntityColumnPropertyNameOptions.DontCaseAllCaps = true;
69+
options.DataModel.EntityColumnPropertyNameOptions.PluralizeOnlyIfLastWordIsText = false;
70+
}
71+
4572
if (!settings.Scaffold.Capitalize)
4673
options.DataModel.EntityColumnPropertyNameOptions.Casing = NameCasing.None;
74+
else
75+
options.DataModel.EntityColumnPropertyNameOptions.Casing = NameCasing.Pascal;
76+
4777
if (!settings.Scaffold.Pluralize)
4878
{
4979
options.DataModel.EntityContextPropertyNameOptions.Pluralization = Pluralization.None;
5080
options.DataModel.TargetMultipleAssociationPropertyNameOptions.Pluralization = Pluralization.None;
5181
}
82+
else
83+
{
84+
options.DataModel.EntityContextPropertyNameOptions.Pluralization = Pluralization.PluralIfLongerThanOne;
85+
options.DataModel.TargetMultipleAssociationPropertyNameOptions.Pluralization = Pluralization.PluralIfLongerThanOne;
86+
}
5287

5388
options.DataModel.GenerateDefaultSchema = true;
5489
options.DataModel.GenerateDataType = true;

Source/UI/Model/ScaffoldModel.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ public bool Pluralize
2323
set => Settings.Scaffold.Pluralize = value;
2424
}
2525

26+
public bool AsIsNames
27+
{
28+
get => Settings.Scaffold.AsIsNames;
29+
set => Settings.Scaffold.AsIsNames = value;
30+
}
31+
2632
public bool UseProviderTypes
2733
{
2834
get => Settings.Scaffold.UseProviderTypes;

Source/UI/Settings/ScaffoldTab.xaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@
1212

1313
<GroupBox Header="Scaffold Options">
1414
<StackPanel Margin="5">
15+
<CheckBox
16+
Margin="5"
17+
IsChecked="{Binding AsIsNames}"
18+
Content="Use table/column names as-is"
19+
ToolTip="When option is not set table, view and column names converted to PascalCase" />
20+
1521
<CheckBox
1622
Margin="5"
1723
IsChecked="{Binding Capitalize}"

Source/linq2db.LINQPad.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<Company>linq2db</Company>
77
<Product>linq2db.LINQPad</Product>
88
<AssemblyTitle>$(Product)</AssemblyTitle>
9-
<Version>5.0.0.0</Version>
9+
<Version>5.1.0.0</Version>
1010
<AssemblyVersion>$(Version)</AssemblyVersion>
1111
<FileVersion>$(Version)</FileVersion>
1212
<Copyright>Copyright © 2016-2023 Linq To DB Team</Copyright>

release-notes.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# Release 5.1.0
2+
3+
Issues fixed:
4+
5+
- [#89](https://github.com/linq2db/linq2db.LINQPad/pull/89), [#90](https://github.com/linq2db/linq2db.LINQPad/pull/90): add scaffold option to use database object names as-is
6+
17
# Release 5.0.0
28

39
Complete driver rewrite:

0 commit comments

Comments
 (0)