diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..d6c7dc0f
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,184 @@
+
+[*.{appxmanifest,axml,blockshader,build,c,c++,c++m,cc,ccm,cginc,compute,config,cp,cpp,cppm,cshtml,csproj,cu,cuh,cxx,cxxm,dbml,discomap,dtd,fx,fxh,h,h++,hh,hlsl,hlsli,hlslinc,hp,hpp,htm,html,hxx,icc,inc,inl,ino,ipp,ixx,jsproj,lsproj,mpp,mq4,mq5,mqh,mxx,njsproj,nuspec,proj,props,razor,resw,resx,shaderFoundry,StyleCop,targets,tasks,tcc,tpp,urtshader,usf,ush,vbproj,xml,xsd}]
+indent_style = tab
+indent_size = tab
+tab_width = 4
+
+[*.{asax,ascx,aspx,axaml,cs,master,paml,skin,vb,xaml,xamlx,xoml}]
+indent_style = space
+indent_size = 4
+tab_width = 4
+
+[*]
+
+# Microsoft .NET properties
+csharp_new_line_before_members_in_object_initializers = false
+csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion
+csharp_style_prefer_utf8_string_literals = true:suggestion
+csharp_style_var_elsewhere = true:suggestion
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+dotnet_naming_rule.interfaces_rule.import_to_resharper = True
+dotnet_naming_rule.interfaces_rule.resharper_description = Interfaces
+dotnet_naming_rule.interfaces_rule.resharper_guid = a7a3339e-4e89-4319-9735-a9dc4cb74cc7
+dotnet_naming_rule.interfaces_rule.severity = warning
+dotnet_naming_rule.interfaces_rule.style = i_upper_camel_case_style
+dotnet_naming_rule.interfaces_rule.symbols = interfaces_symbols
+dotnet_naming_rule.private_constants_rule.import_to_resharper = True
+dotnet_naming_rule.private_constants_rule.resharper_description = Constant fields (private)
+dotnet_naming_rule.private_constants_rule.resharper_guid = 236f7aa5-7b06-43ca-bf2a-9b31bfcff09a
+dotnet_naming_rule.private_constants_rule.severity = warning
+dotnet_naming_rule.private_constants_rule.style = upper_camel_case_style
+dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols
+dotnet_naming_rule.private_instance_fields_rule.import_to_resharper = True
+dotnet_naming_rule.private_instance_fields_rule.resharper_description = Instance fields (private)
+dotnet_naming_rule.private_instance_fields_rule.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
+dotnet_naming_rule.private_instance_fields_rule.severity = warning
+dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style
+dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols
+dotnet_naming_rule.private_static_fields_rule.import_to_resharper = True
+dotnet_naming_rule.private_static_fields_rule.resharper_description = Static fields (private)
+dotnet_naming_rule.private_static_fields_rule.resharper_exclusive_prefixes_suffixes = true
+dotnet_naming_rule.private_static_fields_rule.resharper_guid = f9fce829-e6f4-4cb2-80f1-5497c44f51df
+dotnet_naming_rule.private_static_fields_rule.severity = warning
+dotnet_naming_rule.private_static_fields_rule.style = lower_camel_case_style
+dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols
+dotnet_naming_rule.private_static_readonly_rule.import_to_resharper = True
+dotnet_naming_rule.private_static_readonly_rule.resharper_description = Static readonly fields (private)
+dotnet_naming_rule.private_static_readonly_rule.resharper_guid = 15b5b1f1-457c-4ca6-b278-5615aedc07d3
+dotnet_naming_rule.private_static_readonly_rule.severity = warning
+dotnet_naming_rule.private_static_readonly_rule.style = upper_camel_case_style
+dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols
+dotnet_naming_style.i_upper_camel_case_style.capitalization = pascal_case
+dotnet_naming_style.i_upper_camel_case_style.required_prefix = I
+dotnet_naming_style.lower_camel_case_style.capitalization = camel_case
+dotnet_naming_style.lower_camel_case_style.required_prefix = _
+dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case
+dotnet_naming_symbols.interfaces_symbols.applicable_accessibilities = *
+dotnet_naming_symbols.interfaces_symbols.applicable_kinds = interface
+dotnet_naming_symbols.interfaces_symbols.resharper_applicable_kinds = interface
+dotnet_naming_symbols.interfaces_symbols.resharper_required_modifiers = any
+dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_constants_symbols.required_modifiers = const
+dotnet_naming_symbols.private_constants_symbols.resharper_applicable_kinds = constant_field
+dotnet_naming_symbols.private_constants_symbols.resharper_required_modifiers = any
+dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_instance_fields_symbols.resharper_applicable_kinds = field,readonly_field
+dotnet_naming_symbols.private_instance_fields_symbols.resharper_required_modifiers = instance
+dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static
+dotnet_naming_symbols.private_static_fields_symbols.resharper_applicable_kinds = field
+dotnet_naming_symbols.private_static_fields_symbols.resharper_required_modifiers = static
+dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
+dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
+dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = readonly,static
+dotnet_naming_symbols.private_static_readonly_symbols.resharper_applicable_kinds = readonly_field
+dotnet_naming_symbols.private_static_readonly_symbols.resharper_required_modifiers = static
+dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:warning
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:warning
+dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:warning
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
+
+# ReSharper properties
+resharper_method_or_operator_body = expression_body
+
+# ReSharper inspection severities
+resharper_annotate_can_be_null_parameter_highlighting = warning
+resharper_annotate_can_be_null_type_member_highlighting = warning
+resharper_annotate_not_null_parameter_highlighting = warning
+resharper_annotate_not_null_type_member_highlighting = warning
+resharper_arguments_style_anonymous_function_highlighting = warning
+resharper_arguments_style_literal_highlighting = warning
+resharper_arguments_style_named_expression_highlighting = warning
+resharper_arguments_style_other_highlighting = warning
+resharper_arguments_style_string_literal_highlighting = warning
+resharper_arrange_attributes_highlighting = warning
+resharper_arrange_constructor_or_destructor_body_highlighting = warning
+resharper_arrange_local_function_body_highlighting = warning
+resharper_arrange_method_or_operator_body_highlighting = warning
+resharper_arrange_redundant_parentheses_highlighting = hint
+resharper_arrange_this_qualifier_highlighting = hint
+resharper_arrange_type_member_modifiers_highlighting = hint
+resharper_arrange_type_modifiers_highlighting = hint
+resharper_async_void_method_highlighting = warning
+resharper_bad_attribute_brackets_spaces_highlighting = hint
+resharper_bad_braces_spaces_highlighting = hint
+resharper_bad_child_statement_indent_highlighting = hint
+resharper_bad_colon_spaces_highlighting = hint
+resharper_bad_comma_spaces_highlighting = hint
+resharper_bad_control_braces_indent_highlighting = hint
+resharper_bad_control_braces_line_breaks_highlighting = hint
+resharper_bad_declaration_braces_indent_highlighting = hint
+resharper_bad_declaration_braces_line_breaks_highlighting = hint
+resharper_bad_empty_braces_line_breaks_highlighting = hint
+resharper_bad_expression_braces_indent_highlighting = hint
+resharper_bad_expression_braces_line_breaks_highlighting = hint
+resharper_bad_generic_brackets_spaces_highlighting = hint
+resharper_bad_indent_highlighting = hint
+resharper_bad_linq_line_breaks_highlighting = hint
+resharper_bad_list_line_breaks_highlighting = hint
+resharper_bad_member_access_spaces_highlighting = hint
+resharper_bad_namespace_braces_indent_highlighting = hint
+resharper_bad_parens_line_breaks_highlighting = hint
+resharper_bad_parens_spaces_highlighting = hint
+resharper_bad_preprocessor_indent_highlighting = hint
+resharper_bad_semicolon_spaces_highlighting = hint
+resharper_bad_spaces_after_keyword_highlighting = hint
+resharper_bad_square_brackets_spaces_highlighting = hint
+resharper_bad_switch_braces_indent_highlighting = hint
+resharper_bad_symbol_spaces_highlighting = hint
+resharper_built_in_type_reference_style_for_member_access_highlighting = hint
+resharper_built_in_type_reference_style_highlighting = hint
+resharper_class_can_be_sealed_global_highlighting = warning
+resharper_class_can_be_sealed_local_highlighting = warning
+resharper_compare_non_constrained_generic_with_null_highlighting = warning
+resharper_function_complexity_overflow_highlighting = warning
+resharper_incorrect_blank_lines_near_braces_highlighting = hint
+resharper_lambda_expression_can_be_made_static_highlighting = warning
+resharper_localizable_element_highlighting = none
+resharper_local_function_can_be_made_static_highlighting = warning
+resharper_loop_can_be_partly_converted_to_query_highlighting = warning
+resharper_missing_blank_lines_highlighting = hint
+resharper_missing_indent_highlighting = hint
+resharper_missing_linebreak_highlighting = hint
+resharper_missing_space_highlighting = hint
+resharper_multiple_spaces_highlighting = hint
+resharper_multiple_statements_on_one_line_highlighting = hint
+resharper_multiple_type_members_on_one_line_highlighting = hint
+resharper_nullable_warning_suppression_is_used_highlighting = warning
+resharper_n_unit_attribute_produces_too_many_tests_highlighting = warning
+resharper_outdent_is_off_prev_level_highlighting = hint
+resharper_redundant_base_qualifier_highlighting = warning
+resharper_redundant_blank_lines_highlighting = hint
+resharper_redundant_enum_case_label_for_default_section_highlighting = warning
+resharper_redundant_linebreak_highlighting = hint
+resharper_redundant_space_highlighting = hint
+resharper_remove_constructor_invocation_highlighting = warning
+resharper_separate_control_transfer_statement_highlighting = warning
+resharper_string_ends_with_is_culture_specific_highlighting = warning
+resharper_string_starts_with_is_culture_specific_highlighting = warning
+resharper_struct_member_can_be_made_read_only_highlighting = warning
+resharper_suggest_var_or_type_built_in_types_highlighting = hint
+resharper_suggest_var_or_type_elsewhere_highlighting = hint
+resharper_suggest_var_or_type_simple_types_highlighting = hint
+resharper_switch_expression_handles_some_known_enum_values_with_exception_in_default_highlighting = none
+resharper_tabs_and_spaces_mismatch_highlighting = hint
+resharper_tabs_are_disallowed_highlighting = warning
+resharper_tabs_outside_indent_highlighting = hint
+resharper_unknown_property_highlighting = warning
+resharper_unnecessary_whitespace_highlighting = warning
+resharper_use_configure_await_false_for_async_disposable_highlighting = warning
+resharper_use_nameof_expression_for_part_of_the_string_highlighting = warning
+resharper_use_positional_deconstruction_pattern_highlighting = warning
+resharper_use_throw_if_null_method_highlighting = warning
+resharper_wrong_indent_size_highlighting = hint
+resharper_wrong_metadata_use_highlighting = warning
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 44408851..c5a6f938 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -13,3 +13,7 @@ updates:
target-branch: main
reviewers:
- jas88
+- package-ecosystem: "dotnet-sdk"
+ directory: "/"
+ schedule:
+ interval: weekly
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 535b6234..71dc68ef 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -23,6 +23,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
+ - name: Setup .NET Core
+ uses: actions/setup-dotnet@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
diff --git a/.github/workflows/dotnet-core.yml b/.github/workflows/dotnet-core.yml
index d56e01b9..2828098d 100644
--- a/.github/workflows/dotnet-core.yml
+++ b/.github/workflows/dotnet-core.yml
@@ -11,7 +11,7 @@ env:
jobs:
build:
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
services:
oracle:
image: konnecteam/docker-oracle-12c:sequelize
@@ -37,12 +37,10 @@ jobs:
- uses: actions/checkout@v4
- name: Setup .NET Core
uses: actions/setup-dotnet@v4
- with:
- dotnet-version: 8.0.x
- name: Install Sql Server
run: |
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
+ sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt-get install -y --no-install-recommends postgresql mssql-tools mssql-server
sudo -E /opt/mssql/bin/mssql-conf -n setup accept-eula
- name: MySQL
diff --git a/Directory.Build.props b/Directory.Build.props
index f2ad2f8c..07bbaf46 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,6 +1,7 @@
-
- preview
+
+ net9.0
+ preview
enable
\ No newline at end of file
diff --git a/FAnsiSql/FAnsi.csproj b/FAnsiSql/FAnsi.csproj
index 7c711bf0..ff98b448 100644
--- a/FAnsiSql/FAnsi.csproj
+++ b/FAnsiSql/FAnsi.csproj
@@ -11,12 +11,11 @@
false
FAnsiSql is a database management/ETL library that allows you to perform common SQL operations without having to know which Database Management System (DBMS) you are targetting (e.g. Sql Server, My Sql, Oracle).
Ansi,SQL
- net8.0
HIC.FAnsiSql
Health Informatics Centre, University of Dundee
HIC.FAnsiSql
FAnsiSql is a database management/ETL library that allows you to perform common SQL operations without having to know which Database Management System (DBMS) you are targetting (e.g. Sql Server, My Sql, Oracle).
- Copyright © 2019-2024
+ Copyright © 2019-2025
false
true
true
diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs
index d41ec3a5..a6f29c19 100644
--- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs
+++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs
@@ -110,7 +110,7 @@ private Exception AttemptLineByLineInsert(Exception e, SqlBulkCopy insert, DataT
using var con = (SqlConnection)serverForLineByLineInvestigation.GetConnection();
con.Open();
var investigationTransaction = con.BeginTransaction("Investigate BulkCopyFailure");
- using (var investigationOneLineAtATime = new SqlBulkCopy(con,SqlBulkCopyOptions.KeepIdentity,investigationTransaction))
+ using (var investigationOneLineAtATime = new SqlBulkCopy(con, SqlBulkCopyOptions.KeepIdentity, investigationTransaction))
{
investigationOneLineAtATime.DestinationTableName = insert.DestinationTableName;
@@ -136,7 +136,7 @@ private Exception AttemptLineByLineInsert(Exception e, SqlBulkCopy insert, DataT
line, result), e);
var sourceValue = dr[badMapping.SourceColumn];
- var destColumn = TargetTableColumns.SingleOrDefault(c =>c.GetRuntimeName().Equals(badMapping.DestinationColumn));
+ var destColumn = TargetTableColumns.SingleOrDefault(c => c.GetRuntimeName().Equals(badMapping.DestinationColumn));
if (destColumn != null)
return new FileLoadException(
@@ -146,7 +146,7 @@ private Exception AttemptLineByLineInsert(Exception e, SqlBulkCopy insert, DataT
}
return new FileLoadException(
- string.Format(SR.MicrosoftSQLBulkCopy_AttemptLineByLineInsert_Second_Pass_Exception__Failed_to_load_data_row__0__the_following_values_were_rejected_by_the_database___1__2__3_, line, Environment.NewLine, string.Join(Environment.NewLine,dr.ItemArray), firstPass),
+ string.Format(SR.MicrosoftSQLBulkCopy_AttemptLineByLineInsert_Second_Pass_Exception__Failed_to_load_data_row__0__the_following_values_were_rejected_by_the_database___1__2__3_, line, Environment.NewLine, string.Join(Environment.NewLine, dr.ItemArray), firstPass),
exception);
}
@@ -155,7 +155,7 @@ private Exception AttemptLineByLineInsert(Exception e, SqlBulkCopy insert, DataT
con.Close();
}
- return new Exception(SR.MicrosoftSQLBulkCopy_AttemptLineByLineInsert_Second_Pass_Exception__Bulk_insert_failed_but_when_we_tried_to_repeat_it_a_line_at_a_time_it_worked + firstPass , e);
+ return new Exception(SR.MicrosoftSQLBulkCopy_AttemptLineByLineInsert_Second_Pass_Exception__Bulk_insert_failed_but_when_we_tried_to_repeat_it_a_line_at_a_time_it_worked + firstPass, e);
}
///
@@ -193,7 +193,7 @@ private static bool BcpColIdToString(SqlBulkCopy insert, SqlException? ex, out s
var length = metadata.GetType().GetField("length", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)?.GetValue(metadata);
badMapping = insert.ColumnMappings.Cast()
- .SingleOrDefault(m => string.Equals(m.DestinationColumn , destinationColumn, StringComparison.CurrentCultureIgnoreCase));
+ .SingleOrDefault(m => string.Equals(m.DestinationColumn, destinationColumn, StringComparison.CurrentCultureIgnoreCase));
newMessage = ex.Message.Insert(match.Index + match.Length,
$"(Source Column <<{badMapping?.SourceColumn??"unknown"}>> Dest Column <<{destinationColumn}>> which has MaxLength of {length})");
@@ -212,11 +212,11 @@ private static bool BcpColIdToString(SqlBulkCopy insert, SqlException? ex, out s
private static void EmptyStringsToNulls(DataTable dt)
{
foreach (var col in dt.Columns.Cast().Where(static c => c.DataType == typeof(string)))
- foreach (var row in dt.Rows.Cast()
- .Select(row => new { row, o = row[col] })
- .Where(static t => t.o != DBNull.Value && t.o != null && string.IsNullOrWhiteSpace(t.o.ToString()))
- .Select(static t => t.row))
- row[col] = DBNull.Value;
+ foreach (var row in dt.Rows.Cast()
+ .Select(row => new { row, o = row[col] })
+ .Where(static t => t.o != DBNull.Value && t.o != null && string.IsNullOrWhiteSpace(t.o.ToString()))
+ .Select(static t => t.row))
+ row[col] = DBNull.Value;
}
[Pure]
@@ -246,16 +246,16 @@ private static string ExceptionToListOfInnerMessages(Exception e, bool includeSt
private static void InspectDataTableForFloats(DataTable dt)
{
//are there any float or float? columns
- var floatColumnNames = dt.Columns.Cast().Where(static c => c.DataType == typeof(float) || c.DataType == typeof(float?)).Select(static c=>c.ColumnName).ToArray();
+ var floatColumnNames = dt.Columns.Cast().Where(static c => c.DataType == typeof(float) || c.DataType == typeof(float?)).Select(static c => c.ColumnName).ToArray();
if (floatColumnNames.Length!=0)
throw new NotSupportedException(
$"Found float column(s) in data table, SQLServer does not support floats in bulk insert, instead you should use doubles otherwise you will end up with the value 0.85 turning into :0.850000023841858 in your database. Float column(s) were:{string.Join(",", floatColumnNames)}");
//are there any object columns
- var objectColumns = dt.Columns.Cast().Where(static c => c.DataType == typeof(object)).Select(static col=>col.Ordinal).ToArray();
+ var objectColumns = dt.Columns.Cast().Where(static c => c.DataType == typeof(object)).Select(static col => col.Ordinal).ToArray();
//do any of the object columns have floats or float? in them?
- for (var i = 0; i < Math.Min(100, dt.Rows.Count); i++)
+ for (var i = 0;i < Math.Min(100, dt.Rows.Count);i++)
{
var bad = objectColumns.Select(c => dt.Rows[i][c])
.FirstOrDefault(static t => t is float);
diff --git a/Tests/FAnsiTests/FAnsiTests.csproj b/Tests/FAnsiTests/FAnsiTests.csproj
index 3a9f2abb..51670023 100644
--- a/Tests/FAnsiTests/FAnsiTests.csproj
+++ b/Tests/FAnsiTests/FAnsiTests.csproj
@@ -1,6 +1,5 @@
- net8.0
FAnsiSqlTests
FAnsiSqlTests
Copyright © 2019
diff --git a/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs b/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs
index 41aa4559..20a24ad1 100644
--- a/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs
+++ b/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs
@@ -92,7 +92,7 @@ public void TestBasicCase_FailHalfWay_SchemaUnchanged(DatabaseType databaseType)
Assert.Multiple(() =>
{
Assert.That(ex?.Message.Contains("Failed to create primary key on table") ?? false);
- Assert.That(ex?.InnerException, Is.Not.InstanceOf(typeof(AggregateException)));
+ Assert.That(ex?.InnerException, Is.Not.InstanceOf());
Assert.That(ex?.InnerException, Is.InstanceOf());
});
diff --git a/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs b/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs
index 4bed1cbc..c17814ab 100644
--- a/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs
+++ b/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs
@@ -22,16 +22,16 @@ namespace FAnsiTests.TypeTranslation;
///
public sealed class TypeTranslaterTests : DatabaseTests
{
- private readonly Dictionary _translaters = [];
+ private readonly Dictionary _translaters = [];
[OneTimeSetUp]
public void SetupDatabases()
{
- foreach (DatabaseType type in Enum.GetValues(typeof(DatabaseType)))
+ foreach (var type in Enum.GetValues())
try
{
var tt = ImplementationManager.GetImplementation(type).GetQuerySyntaxHelper().TypeTranslater;
- _translaters.Add(type,tt);
+ _translaters.Add(type, tt);
}
catch (ImplementationNotFoundException)
{
diff --git a/global.json b/global.json
new file mode 100644
index 00000000..45f790ca
--- /dev/null
+++ b/global.json
@@ -0,0 +1,6 @@
+{
+ "sdk": {
+ "version": "9.0.101",
+ "rollForward": "minor"
+ }
+}