diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6e151cb..3e74513 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,13 +23,13 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.100 + dotnet-version: 9.x source-url: https://nuget.pkg.github.com/bpslogicbuilder/index.json env: NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Add Telerik Nuget source - run: dotnet nuget add source https://nuget.telerik.com/nuget -n telerik -u ${{ secrets.TELERIK_USERNAME }} -p ${{ secrets.TELERIK_PASSWORD }} + run: dotnet nuget add source https://nuget.telerik.com/v3/index.json -n telerik -u ${{ secrets.TELERIK_USERNAME }} -p ${{ secrets.TELERIK_PASSWORD }} - name: Add AutoMapper Myget Source run: dotnet nuget add source https://www.myget.org/F/automapperdev/api/v3/index.json -n automappermyget diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 49b6fa8..263b87f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,13 +21,13 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: - dotnet-version: 8.0.100 + dotnet-version: 9.x source-url: https://nuget.pkg.github.com/bpslogicbuilder/index.json env: NUGET_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Add Telerik Nuget source - run: dotnet nuget add source https://nuget.telerik.com/nuget -n telerik -u ${{ secrets.TELERIK_USERNAME }} -p ${{ secrets.TELERIK_PASSWORD }} + run: dotnet nuget add source https://nuget.telerik.com/v3/index.json -n telerik -u ${{ secrets.TELERIK_USERNAME }} -p ${{ secrets.TELERIK_PASSWORD }} - name: Set Variables run: | diff --git a/LogicBuilder.Data/LogicBuilder.Data.csproj b/LogicBuilder.Data/LogicBuilder.Data.csproj index d663806..43c5e79 100644 --- a/LogicBuilder.Data/LogicBuilder.Data.csproj +++ b/LogicBuilder.Data/LogicBuilder.Data.csproj @@ -22,11 +22,11 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.Domain/LogicBuilder.Domain.csproj b/LogicBuilder.Domain/LogicBuilder.Domain.csproj index 844ee74..35f7928 100644 --- a/LogicBuilder.Domain/LogicBuilder.Domain.csproj +++ b/LogicBuilder.Domain/LogicBuilder.Domain.csproj @@ -22,11 +22,11 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests.csproj b/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests.csproj index 72b9656..f8afc8e 100644 --- a/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests.csproj +++ b/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests/LogicBuilder.EntityFrameworkCore.SqlServer.IntegrationTests.csproj @@ -1,20 +1,20 @@  - net8.0 + net9.0 false - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/LogicBuilder.EntityFrameworkCore.SqlServer.Tests/LogicBuilder.EntityFrameworkCore.SqlServer.Tests.csproj b/LogicBuilder.EntityFrameworkCore.SqlServer.Tests/LogicBuilder.EntityFrameworkCore.SqlServer.Tests.csproj index a7f56df..bf0a6b4 100644 --- a/LogicBuilder.EntityFrameworkCore.SqlServer.Tests/LogicBuilder.EntityFrameworkCore.SqlServer.Tests.csproj +++ b/LogicBuilder.EntityFrameworkCore.SqlServer.Tests/LogicBuilder.EntityFrameworkCore.SqlServer.Tests.csproj @@ -1,15 +1,15 @@  - net8.0 + net9.0 false - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.EntityFrameworkCore.SqlServer/LogicBuilder.EntityFrameworkCore.SqlServer.csproj b/LogicBuilder.EntityFrameworkCore.SqlServer/LogicBuilder.EntityFrameworkCore.SqlServer.csproj index 4c91c09..795aa6e 100644 --- a/LogicBuilder.EntityFrameworkCore.SqlServer/LogicBuilder.EntityFrameworkCore.SqlServer.csproj +++ b/LogicBuilder.EntityFrameworkCore.SqlServer/LogicBuilder.EntityFrameworkCore.SqlServer.csproj @@ -1,13 +1,13 @@  - net6.0;net7.0;net8.0 + net8.0;net9.0 LogicBuilder.EntityFrameworkCore.SqlServer LogicBuilder.EntityFrameworkCore.SqlServer BlaiseD Given an EF Core DBContext, LogicBuilder.EntityFrameworkCore.SqlServer uses AutoMapper configurations to support CRUD operations using the DTO objects. false - Bug fix: Allow delete after updating an entity. + Supporting .NET 9.0. crud operations efcore Copyright © BPS 2017 https://github.com/BpsLogicBuilder/LogicBuilder.DataComponents @@ -22,31 +22,27 @@ - + - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - + + - - + + diff --git a/LogicBuilder.Expressions.EntityFrameworkCore/LogicBuilder.Expressions.EntityFrameworkCore.csproj b/LogicBuilder.Expressions.EntityFrameworkCore/LogicBuilder.Expressions.EntityFrameworkCore.csproj index f2a51ff..1c3d999 100644 --- a/LogicBuilder.Expressions.EntityFrameworkCore/LogicBuilder.Expressions.EntityFrameworkCore.csproj +++ b/LogicBuilder.Expressions.EntityFrameworkCore/LogicBuilder.Expressions.EntityFrameworkCore.csproj @@ -1,7 +1,7 @@  - net6.0;net7.0;net8.0 + net8.0;net9.0 LogicBuilder.Expressions.EntityFrameworkCore LogicBuilder.Expressions.EntityFrameworkCore BlaiseD @@ -22,28 +22,24 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - + + - - + + diff --git a/LogicBuilder.Expressions.Utils.Tests/LogicBuilder.Expressions.Utils.Tests.csproj b/LogicBuilder.Expressions.Utils.Tests/LogicBuilder.Expressions.Utils.Tests.csproj index 24f1d0a..0b9816c 100644 --- a/LogicBuilder.Expressions.Utils.Tests/LogicBuilder.Expressions.Utils.Tests.csproj +++ b/LogicBuilder.Expressions.Utils.Tests/LogicBuilder.Expressions.Utils.Tests.csproj @@ -1,19 +1,20 @@  - net8.0 + net9.0 false - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.Expressions.Utils.Tests/QueryableExpressionTests.cs b/LogicBuilder.Expressions.Utils.Tests/QueryableExpressionTests.cs index 93ca40c..e7ec078 100644 --- a/LogicBuilder.Expressions.Utils.Tests/QueryableExpressionTests.cs +++ b/LogicBuilder.Expressions.Utils.Tests/QueryableExpressionTests.cs @@ -1,6 +1,5 @@ using Contoso.Data.Entities; using LogicBuilder.Expressions.Utils.ExpressionBuilder; -using LogicBuilder.Expressions.Utils.ExpressionBuilder.Arithmetic; using LogicBuilder.Expressions.Utils.ExpressionBuilder.Cacnonical; using LogicBuilder.Expressions.Utils.ExpressionBuilder.Collection; using LogicBuilder.Expressions.Utils.ExpressionBuilder.Lambda; @@ -9,7 +8,6 @@ using LogicBuilder.Expressions.Utils.Tests.Data; using System; using System.Collections.Generic; -using System.ComponentModel; using System.Linq; using System.Linq.Expressions; using Xunit; diff --git a/LogicBuilder.Expressions.Utils/Constants.cs b/LogicBuilder.Expressions.Utils/Constants.cs index dee998d..02fbd7e 100644 --- a/LogicBuilder.Expressions.Utils/Constants.cs +++ b/LogicBuilder.Expressions.Utils/Constants.cs @@ -10,9 +10,11 @@ public struct AttributeNames public const string PROPERTYSOURCEPARAMETER = "propertySourceParameter"; } - public struct NET6OnlyLiteralTypeNames + public struct UnreferencedLiteralTypeNames { public const string DATEONLY = "System.DateOnly"; public const string TIMEONLY = "System.TimeOnly"; + public const string DATE = "Microsoft.OData.Edm.Date"; + public const string TIMEOFDAY = "Microsoft.OData.Edm.TimeOfDay"; } } diff --git a/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericDateOperator.cs b/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericDateOperator.cs index 8152485..43eaf1d 100644 --- a/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericDateOperator.cs +++ b/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericDateOperator.cs @@ -1,5 +1,4 @@ -using Microsoft.OData.Edm; -using System; +using System; using System.Linq.Expressions; namespace LogicBuilder.Expressions.Utils.ExpressionBuilder.DateTimeOperators @@ -21,8 +20,8 @@ private Expression Build(Expression operandExpression) if (operandExpression.Type != typeof(DateTimeOffset) && operandExpression.Type != typeof(DateTime) - && operandExpression.Type != typeof(Date) - && operandExpression.Type.FullName != NET6OnlyLiteralTypeNames.DATEONLY) + && operandExpression.Type.FullName != UnreferencedLiteralTypeNames.DATE + && operandExpression.Type.FullName != UnreferencedLiteralTypeNames.DATEONLY) return operandExpression; return Expression.Add diff --git a/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericTimeOperator.cs b/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericTimeOperator.cs index bbef641..b2ec652 100644 --- a/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericTimeOperator.cs +++ b/LogicBuilder.Expressions.Utils/ExpressionBuilder/DateTimeOperators/ConvertToNumericTimeOperator.cs @@ -1,5 +1,4 @@ -using Microsoft.OData.Edm; -using System; +using System; using System.Linq.Expressions; namespace LogicBuilder.Expressions.Utils.ExpressionBuilder.DateTimeOperators @@ -22,8 +21,8 @@ private Expression Build(Expression operandExpression) if (operandExpression.Type != typeof(DateTimeOffset) && operandExpression.Type != typeof(DateTime) && operandExpression.Type != typeof(TimeSpan) - && operandExpression.Type != typeof(TimeOfDay) - && operandExpression.Type.FullName != NET6OnlyLiteralTypeNames.TIMEONLY) + && operandExpression.Type.FullName != UnreferencedLiteralTypeNames.TIMEOFDAY + && operandExpression.Type.FullName != UnreferencedLiteralTypeNames.TIMEONLY) return operandExpression; return Expression.Add diff --git a/LogicBuilder.Expressions.Utils/LinqHelpers.cs b/LogicBuilder.Expressions.Utils/LinqHelpers.cs index 6ef454d..30e1d6b 100644 --- a/LogicBuilder.Expressions.Utils/LinqHelpers.cs +++ b/LogicBuilder.Expressions.Utils/LinqHelpers.cs @@ -1,7 +1,6 @@ using LogicBuilder.Expressions.Utils.ExpressionBuilder; using LogicBuilder.Expressions.Utils.ExpressionBuilder.Lambda; using LogicBuilder.Expressions.Utils.Strutures; -using Microsoft.OData.Edm; using System; using System.Collections.Generic; using System.Globalization; @@ -214,8 +213,8 @@ public static Expression MakeDaySelector(this Expression operandExpression) if (operandExpression.Type == typeof(DateTime) || operandExpression.Type == typeof(DateTimeOffset) - || operandExpression.Type == typeof(Date) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.DATEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.DATE + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.DATEONLY) return operandExpression.MakeSelector("Day"); else throw new ArgumentException(nameof(operandExpression)); @@ -227,8 +226,8 @@ public static Expression MakeMonthSelector(this Expression operandExpression) if (operandExpression.Type == typeof(DateTime) || operandExpression.Type == typeof(DateTimeOffset) - || operandExpression.Type == typeof(Date) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.DATEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.DATE + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.DATEONLY) return operandExpression.MakeSelector("Month"); else throw new ArgumentException(nameof(operandExpression)); @@ -240,8 +239,8 @@ public static Expression MakeYearSelector(this Expression operandExpression) if (operandExpression.Type == typeof(DateTime) || operandExpression.Type == typeof(DateTimeOffset) - || operandExpression.Type == typeof(Date) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.DATEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.DATE + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.DATEONLY) return operandExpression.MakeSelector("Year"); else throw new ArgumentException(nameof(operandExpression)); @@ -253,12 +252,12 @@ public static Expression MakeHourSelector(this Expression operandExpression) if (operandExpression.Type == typeof(DateTimeOffset) || operandExpression.Type == typeof(DateTime) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.TIMEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEONLY) { return operandExpression.MakeSelector("Hour"); } else if (operandExpression.Type == typeof(TimeSpan) - || operandExpression.Type == typeof(TimeOfDay)) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEOFDAY) { return operandExpression.MakeSelector("Hours"); } @@ -272,12 +271,12 @@ public static Expression MakeMinuteSelector(this Expression operandExpression) if (operandExpression.Type == typeof(DateTimeOffset) || operandExpression.Type == typeof(DateTime) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.TIMEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEONLY) { return operandExpression.MakeSelector("Minute"); } else if (operandExpression.Type == typeof(TimeSpan) - || operandExpression.Type == typeof(TimeOfDay)) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEOFDAY) { return operandExpression.MakeSelector("Minutes"); } @@ -291,12 +290,12 @@ public static Expression MakeSecondSelector(this Expression operandExpression) if (operandExpression.Type == typeof(DateTimeOffset) || operandExpression.Type == typeof(DateTime) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.TIMEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEONLY) { return operandExpression.MakeSelector("Second"); } else if (operandExpression.Type == typeof(TimeSpan) - || operandExpression.Type == typeof(TimeOfDay)) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEOFDAY) { return operandExpression.MakeSelector("Seconds"); } @@ -310,12 +309,12 @@ public static Expression MakeMillisecondSelector(this Expression operandExpressi if (operandExpression.Type == typeof(DateTimeOffset) || operandExpression.Type == typeof(DateTime) - || operandExpression.Type.FullName == NET6OnlyLiteralTypeNames.TIMEONLY) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEONLY) { return operandExpression.MakeSelector("Millisecond"); } else if (operandExpression.Type == typeof(TimeSpan) - || operandExpression.Type == typeof(TimeOfDay)) + || operandExpression.Type.FullName == UnreferencedLiteralTypeNames.TIMEOFDAY) { return operandExpression.MakeSelector("Milliseconds"); } diff --git a/LogicBuilder.Expressions.Utils/LogicBuilder.Expressions.Utils.csproj b/LogicBuilder.Expressions.Utils/LogicBuilder.Expressions.Utils.csproj index 9e29569..d1dfe21 100644 --- a/LogicBuilder.Expressions.Utils/LogicBuilder.Expressions.Utils.csproj +++ b/LogicBuilder.Expressions.Utils/LogicBuilder.Expressions.Utils.csproj @@ -22,14 +22,13 @@ - + - - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.Expressions.Utils/TypeExtensions.cs b/LogicBuilder.Expressions.Utils/TypeExtensions.cs index 43dae73..97fe092 100644 --- a/LogicBuilder.Expressions.Utils/TypeExtensions.cs +++ b/LogicBuilder.Expressions.Utils/TypeExtensions.cs @@ -1,5 +1,4 @@ using LogicBuilder.Expressions.Utils.Properties; -using Microsoft.OData.Edm; using System; using System.Collections.Generic; using System.Linq; @@ -62,25 +61,25 @@ public static bool IsLiteralType(this Type type) type = Nullable.GetUnderlyingType(type); return LiteralTypes.Contains(type) - || Net6OnlyLiteralTypes.Contains(type.FullName) + || UneferencedLiteralTypes.Contains(type.FullName) || typeof(Enum).IsAssignableFrom(type); } private static HashSet LiteralTypes => new HashSet(_literalTypes); - private static readonly HashSet Net6OnlyLiteralTypes = new() - { - NET6OnlyLiteralTypeNames.DATEONLY, - NET6OnlyLiteralTypeNames.TIMEONLY - }; + private static readonly HashSet UneferencedLiteralTypes = + [ + UnreferencedLiteralTypeNames.DATEONLY, + UnreferencedLiteralTypeNames.TIMEONLY, + UnreferencedLiteralTypeNames.DATE, + UnreferencedLiteralTypeNames.TIMEOFDAY + ]; - private static Type[] _literalTypes => new Type[] { + private static Type[] _literalTypes => [ typeof(bool), typeof(DateTime), typeof(DateTimeOffset), - typeof(Date), typeof(TimeSpan), - typeof(TimeOfDay), typeof(Guid), typeof(decimal), typeof(byte), @@ -95,7 +94,7 @@ public static bool IsLiteralType(this Type type) typeof(uint), typeof(ulong), typeof(string) - }; + ]; public static Type GetMemberType(this MemberExpression me) => me.Member.GetMemberType(); diff --git a/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests.csproj b/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests.csproj index dc4e09f..e4b378a 100644 --- a/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests.csproj +++ b/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests/LogicBuilder.Kendo.ExpressionExtensions.IntegrationTests.csproj @@ -1,7 +1,7 @@  - net8.0 + net9.0 @@ -9,10 +9,10 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.Kendo.ExpressionExtensions/LogicBuilder.Kendo.ExpressionExtensions.csproj b/LogicBuilder.Kendo.ExpressionExtensions/LogicBuilder.Kendo.ExpressionExtensions.csproj index be8b239..238e64a 100644 --- a/LogicBuilder.Kendo.ExpressionExtensions/LogicBuilder.Kendo.ExpressionExtensions.csproj +++ b/LogicBuilder.Kendo.ExpressionExtensions/LogicBuilder.Kendo.ExpressionExtensions.csproj @@ -1,7 +1,7 @@  - netstandard2.0 + net8.0 LogicBuilder.Kendo.ExpressionExtensions LogicBuilder.Kendo.ExpressionExtensions BlaiseD @@ -22,12 +22,12 @@ - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/LogicBuilder.Structures/LogicBuilder.Structures.csproj b/LogicBuilder.Structures/LogicBuilder.Structures.csproj index b8b1c36..d05d1eb 100644 --- a/LogicBuilder.Structures/LogicBuilder.Structures.csproj +++ b/LogicBuilder.Structures/LogicBuilder.Structures.csproj @@ -22,11 +22,11 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive