From 0c3a1d6e5fa5084f54de13cea793338a19b5192f Mon Sep 17 00:00:00 2001 From: Svyatoslav Danyliv Date: Fri, 8 Apr 2022 15:57:59 +0300 Subject: [PATCH 1/4] Added better Insert skip check. --- .../EFCoreMetadataReader.cs | 15 ++++++++++++++- .../Models/NpgSqlEntities/EntityWithXmin.cs | 14 ++++++++++++++ .../NpgSqlEntities/NpgSqlEnititesContext.cs | 7 +++++++ .../NpgSqlTests.cs | 13 +++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/EntityWithXmin.cs diff --git a/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs b/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs index 025b4ad..f20e63a 100644 --- a/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs +++ b/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs @@ -256,6 +256,17 @@ public T[] GetAttributes(Type type, MemberInfo memberInfo, bool inherit = tru } } + var behaviour = prop.GetBeforeSaveBehavior(); + var skipOnInsert = prop.ValueGenerated.HasFlag(ValueGenerated.OnAdd); + + if (skipOnInsert) + { + skipOnInsert = isIdentity || behaviour != PropertySaveBehavior.Save; + } + + var skipOnUpdate = behaviour != PropertySaveBehavior.Save || + prop.ValueGenerated.HasFlag(ValueGenerated.OnUpdate); + return new T[] { (T)(Attribute)new ColumnAttribute @@ -268,7 +279,9 @@ public T[] GetAttributes(Type type, MemberInfo memberInfo, bool inherit = tru IsPrimaryKey = isPrimaryKey, PrimaryKeyOrder = primaryKeyOrder, IsIdentity = isIdentity, - IsDiscriminator = discriminator == prop + IsDiscriminator = discriminator == prop, + SkipOnInsert = skipOnInsert, + SkipOnUpdate = skipOnUpdate } }; } diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/EntityWithXmin.cs b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/EntityWithXmin.cs new file mode 100644 index 0000000..b4896ee --- /dev/null +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/EntityWithXmin.cs @@ -0,0 +1,14 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.Models.NpgSqlEntities +{ + public class EntityWithXmin + { + [Key] + public int Id { get; set; } + + public uint xmin { get; set; } + public string Value { get; set; } = null!; + } +} diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs index 45e90b9..d221559 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs @@ -24,10 +24,17 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.Entity(entity => { }); + + modelBuilder.Entity(entity => + { + entity.UseXminAsConcurrencyToken(); + }); + } public virtual DbSet Events { get; set; } = null!; public virtual DbSet EntityWithArrays { get; set; } = null!; + public virtual DbSet EntityWithXmin { get; set; } = null!; } } diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs index 13361a7..12239a6 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs @@ -87,6 +87,19 @@ where Sql.Ext.PostgreSQL().Overlaps(m.Guids, guids) } } + [Test] + public void TestConcurrencyToken() + { + using var db = CreateNpgSqlEntitiesContext(); + + var toInsert = Enumerable.Range(1, 10) + .Select(i => new EntityWithXmin { Value = "Str" + i }) + .ToArray(); + + db.BulkCopy(toInsert); + } + + [Test] public void TestUnnest() { From c722e2601973cd3ce1dd7eba47db8303aff3110d Mon Sep 17 00:00:00 2001 From: MaceWindu Date: Wed, 18 May 2022 13:49:39 +0200 Subject: [PATCH 2/4] updates + v4 migration --- Directory.Packages.props | 26 +++--- NuGet.config | 7 +- NuGet/linq2db.EntityFrameworkCore.nuspec | 4 +- .../EFCoreMetadataReader.cs | 10 +-- .../LinqToDBExtensionsAdapter.cs | 16 ++-- .../LinqToDBForEFExtensions.Async.cs | 8 +- .../LinqToDBForEFToolsDataConnection.cs | 48 +++++----- .../LinqToDBForEFToolsImplDefault.cs | 89 +++++-------------- .../ForMappingTestsBase.cs | 6 +- azure-pipelines.yml | 7 +- 10 files changed, 88 insertions(+), 133 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 6686728..80bf2e7 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,26 +1,26 @@  - - - - + + + + - - + + - + - - + + - - - - + + + + diff --git a/NuGet.config b/NuGet.config index 14c2409..a66ce80 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,4 +4,9 @@ - \ No newline at end of file + + + + + + diff --git a/NuGet/linq2db.EntityFrameworkCore.nuspec b/NuGet/linq2db.EntityFrameworkCore.nuspec index e9dff45..a9fbc69 100644 --- a/NuGet/linq2db.EntityFrameworkCore.nuspec +++ b/NuGet/linq2db.EntityFrameworkCore.nuspec @@ -15,8 +15,8 @@ MIT-LICENSE.txt - - + + diff --git a/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs b/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs index f20e63a..166c65d 100644 --- a/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs +++ b/Source/LinqToDB.EntityFrameworkCore/EFCoreMetadataReader.cs @@ -317,8 +317,7 @@ public T[] GetAttributes(Type type, MemberInfo memberInfo, bool inherit = tru { ThisKey = thisKey, OtherKey = otherKey, - CanBeNull = canBeNull, - IsBackReference = false + CanBeNull = canBeNull }); } else @@ -329,8 +328,7 @@ public T[] GetAttributes(Type type, MemberInfo memberInfo, bool inherit = tru { ThisKey = thisKey, OtherKey = otherKey, - CanBeNull = !fk.IsRequired, - IsBackReference = true + CanBeNull = !fk.IsRequired }); } } @@ -446,7 +444,7 @@ public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != this.GetType()) return false; + if (obj.GetType() != GetType()) return false; return Equals((SqlTransparentExpression) obj); } @@ -565,7 +563,7 @@ string PrepareExpressionText(Expression? expr) if (expr is SqlFunctionExpression sqlFunction) { var text = sqlFunction.Name; - if (!sqlFunction.Schema.IsNullOrEmpty()) + if (!string.IsNullOrEmpty(sqlFunction.Schema)) text = sqlFunction.Schema + "." + sqlFunction.Name; if (!sqlFunction.IsNiladic) diff --git a/Source/LinqToDB.EntityFrameworkCore/LinqToDBExtensionsAdapter.cs b/Source/LinqToDB.EntityFrameworkCore/LinqToDBExtensionsAdapter.cs index 7e4d5db..b835712 100644 --- a/Source/LinqToDB.EntityFrameworkCore/LinqToDBExtensionsAdapter.cs +++ b/Source/LinqToDB.EntityFrameworkCore/LinqToDBExtensionsAdapter.cs @@ -187,30 +187,30 @@ public Task LongCountAsync( => EntityFrameworkQueryableExtensions.LongCountAsync(source, predicate, token); /// - public Task MinAsync( + public Task MinAsync( IQueryable source, CancellationToken token) - => EntityFrameworkQueryableExtensions.MinAsync(source, token); + => EntityFrameworkQueryableExtensions.MinAsync(source, token)!; /// - public Task MinAsync( + public Task MinAsync( IQueryable source, Expression> selector, CancellationToken token) - => EntityFrameworkQueryableExtensions.MinAsync(source, selector, token); + => EntityFrameworkQueryableExtensions.MinAsync(source, selector, token)!; /// - public Task MaxAsync( + public Task MaxAsync( IQueryable source, CancellationToken token) - => EntityFrameworkQueryableExtensions.MaxAsync(source, token); + => EntityFrameworkQueryableExtensions.MaxAsync(source, token)!; /// - public Task MaxAsync( + public Task MaxAsync( IQueryable source, Expression> selector, CancellationToken token) - => EntityFrameworkQueryableExtensions.MaxAsync(source, selector, token); + => EntityFrameworkQueryableExtensions.MaxAsync(source, selector, token)!; #region SumAsync diff --git a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFExtensions.Async.cs b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFExtensions.Async.cs index 302eef8..cf8b9c1 100644 --- a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFExtensions.Async.cs +++ b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFExtensions.Async.cs @@ -168,26 +168,26 @@ public static Task LongCountAsyncLinqToDB( => AsyncExtensions.LongCountAsync(source.ToLinqToDB(), predicate, token); /// - public static Task MinAsyncLinqToDB( + public static Task MinAsyncLinqToDB( this IQueryable source, CancellationToken token = default) => AsyncExtensions.MinAsync(source.ToLinqToDB(), token); /// - public static Task MinAsyncLinqToDB( + public static Task MinAsyncLinqToDB( this IQueryable source, Expression> selector, CancellationToken token = default) => AsyncExtensions.MinAsync(source.ToLinqToDB(), selector, token); /// - public static Task MaxAsyncLinqToDB( + public static Task MaxAsyncLinqToDB( this IQueryable source, CancellationToken token = default) => AsyncExtensions.MaxAsync(source.ToLinqToDB(), token); /// - public static Task MaxAsyncLinqToDB( + public static Task MaxAsyncLinqToDB( this IQueryable source, Expression> selector, CancellationToken token = default) diff --git a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsDataConnection.cs b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsDataConnection.cs index 8abfdd6..1078287 100644 --- a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsDataConnection.cs +++ b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsDataConnection.cs @@ -19,11 +19,13 @@ namespace LinqToDB.EntityFrameworkCore using DataProvider; using Linq; using Expressions; + using LinqToDB.Interceptors; + using System.Data.Common; /// /// linq2db EF.Core data connection. /// - public class LinqToDBForEFToolsDataConnection : DataConnection, IExpressionPreprocessor + public class LinqToDBForEFToolsDataConnection : DataConnection, IExpressionPreprocessor, IEntityServiceInterceptor { readonly IModel? _model; readonly Func? _transformFunc; @@ -67,7 +69,7 @@ public LinqToDBForEFToolsDataConnection( _transformFunc = transformFunc; CopyDatabaseProperties(); if (LinqToDBForEFTools.EnableChangeTracker) - OnEntityCreated += OnEntityCreatedHandler; + AddInterceptor(this); } /// @@ -80,9 +82,9 @@ public LinqToDBForEFToolsDataConnection( /// Expression converter. public LinqToDBForEFToolsDataConnection( DbContext? context, - [NotNull] IDataProvider dataProvider, - [NotNull] IDbTransaction transaction, - IModel? model, + [NotNull] IDataProvider dataProvider, + [NotNull] DbTransaction transaction, + IModel? model, Func? transformFunc ) : base(dataProvider, transaction) { @@ -91,7 +93,7 @@ public LinqToDBForEFToolsDataConnection( _transformFunc = transformFunc; CopyDatabaseProperties(); if (LinqToDBForEFTools.EnableChangeTracker) - OnEntityCreated += OnEntityCreatedHandler; + AddInterceptor(this); } /// @@ -105,7 +107,7 @@ public LinqToDBForEFToolsDataConnection( public LinqToDBForEFToolsDataConnection( DbContext? context, [NotNull] IDataProvider dataProvider, - [NotNull] IDbConnection connection, + [NotNull] DbConnection connection, IModel? model, Func? transformFunc) : base(dataProvider, connection) { @@ -114,7 +116,7 @@ public LinqToDBForEFToolsDataConnection( _transformFunc = transformFunc; CopyDatabaseProperties(); if (LinqToDBForEFTools.EnableChangeTracker) - OnEntityCreated += OnEntityCreatedHandler; + AddInterceptor(this); } /// @@ -157,7 +159,7 @@ public override bool Equals(object? obj) return true; } - if (obj.GetType() != this.GetType()) + if (obj.GetType() != GetType()) { return false; } @@ -174,22 +176,22 @@ public override int GetHashCode() } } - private void OnEntityCreatedHandler(EntityCreatedEventArgs args) + object IEntityServiceInterceptor.EntityCreated(EntityCreatedEventData eventData, object entity) { // Do not allow to store in ChangeTracker temporary tables - if ((args.TableOptions & TableOptions.IsTemporaryOptionSet) != 0) - return; + if ((eventData.TableOptions & TableOptions.IsTemporaryOptionSet) != 0) + return entity; // Do not allow to store in ChangeTracker tables from different server - if (args.ServerName != null) - return; + if (eventData.ServerName != null) + return entity; if (!LinqToDBForEFTools.EnableChangeTracker || !Tracking || Context!.ChangeTracker.QueryTrackingBehavior == QueryTrackingBehavior.NoTracking) - return; + return entity; - var type = args.Entity.GetType(); + var type = entity.GetType(); if (_lastType != type) { _lastType = type; @@ -197,11 +199,11 @@ private void OnEntityCreatedHandler(EntityCreatedEventArgs args) } if (_lastEntityType == null) - return; + return entity; // Do not allow to store in ChangeTracker tables that has different name - if (args.TableName != _lastEntityType.GetTableName()) - return; + if (eventData.TableName != _lastEntityType.GetTableName()) + return entity; if (_stateManager == null) _stateManager = Context.GetService(); @@ -220,16 +222,16 @@ private void OnEntityCreatedHandler(EntityCreatedEventArgs args) }); if (retrievalFunc == null) - return; + return entity; - entry = retrievalFunc(_stateManager, args.Entity); + entry = retrievalFunc(_stateManager, entity); if (entry == null) { - entry = _stateManager.StartTrackingFromQuery(_lastEntityType, args.Entity, ValueBuffer.Empty); + entry = _stateManager.StartTrackingFromQuery(_lastEntityType, entity, ValueBuffer.Empty); } - args.Entity = entry.Entity; + return entry.Entity; } private Func? CreateEntityRetrievalFunc(IEntityType entityType) diff --git a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs index 9431db7..19434c9 100644 --- a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs +++ b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs @@ -6,40 +6,36 @@ using System.Linq; using System.Linq.Expressions; using System.Reflection; +using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Microsoft.EntityFrameworkCore.Query; using Microsoft.EntityFrameworkCore.Query.Internal; -using Microsoft.Extensions.Logging; - -using JetBrains.Annotations; -using Microsoft.EntityFrameworkCore.Diagnostics; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Microsoft.Extensions.Caching.Memory; +using Microsoft.Extensions.Logging; namespace LinqToDB.EntityFrameworkCore { - using Data; - using Expressions; - using Mapping; - using Metadata; - using Extensions; - using SqlQuery; - using Reflection; + using System.Diagnostics.CodeAnalysis; using Common.Internal.Cache; - + using Data; using DataProvider; using DataProvider.DB2; using DataProvider.Firebird; using DataProvider.MySql; using DataProvider.Oracle; using DataProvider.PostgreSQL; + using DataProvider.SqlCe; using DataProvider.SQLite; using DataProvider.SqlServer; - using DataProvider.SqlCe; - using System.Diagnostics.CodeAnalysis; + using Expressions; + using Extensions; + using Mapping; + using Metadata; + using Reflection; + using SqlQuery; // ReSharper disable once ClassWithVirtualMembersNeverInherited.Global /// @@ -169,23 +165,22 @@ protected virtual IDataProvider CreateLinqToDbDataProvider(EFProviderInfo provid return CreateSqlServerProvider(SqlServerDefaultVersion, connectionInfo.ConnectionString); case ProviderName.MySql: case ProviderName.MySqlConnector: - return new MySqlDataProvider(provInfo.ProviderName); + return MySqlTools.GetDataProvider(provInfo.ProviderName); case ProviderName.PostgreSQL: return CreatePostgreSqlProvider(PostgreSqlDefaultVersion, connectionInfo.ConnectionString); case ProviderName.SQLite: - return new SQLiteDataProvider(provInfo.ProviderName); + return SQLiteTools.GetDataProvider(provInfo.ProviderName); case ProviderName.Firebird: - return new FirebirdDataProvider(); + return FirebirdTools.GetDataProvider(); case ProviderName.DB2: - return new DB2DataProvider(ProviderName.DB2, DB2Version.LUW); case ProviderName.DB2LUW: - return new DB2DataProvider(ProviderName.DB2, DB2Version.LUW); + return DB2Tools.GetDataProvider(DB2Version.LUW); case ProviderName.DB2zOS: - return new DB2DataProvider(ProviderName.DB2, DB2Version.zOS); + return DB2Tools.GetDataProvider(DB2Version.zOS); case ProviderName.Oracle: - return new OracleDataProvider(provInfo.ProviderName, OracleVersion.v11); + return OracleTools.GetDataProvider(provInfo.ProviderName, version: OracleVersion.v11); case ProviderName.SqlCe: - return new SqlCeDataProvider(); + return SqlCeTools.GetDataProvider(); //case ProviderName.Access: // return new AccessDataProvider(); @@ -326,34 +321,10 @@ protected virtual IDataProvider CreateLinqToDbDataProvider(EFProviderInfo provid /// linq2db SQL Server provider instance. protected virtual IDataProvider CreateSqlServerProvider(SqlServerVersion version, string? connectionString) { - string providerName; - if (!string.IsNullOrEmpty(connectionString)) - { - providerName = "Microsoft.Data.SqlClient"; + return DataConnection.GetDataProvider("Microsoft.Data.SqlClient", connectionString!)!; - return DataConnection.GetDataProvider(providerName, connectionString!)!; - } - - switch (version) - { - case SqlServerVersion.v2000: - providerName = ProviderName.SqlServer2000; - break; - case SqlServerVersion.v2005: - providerName = ProviderName.SqlServer2005; - break; - case SqlServerVersion.v2008: - providerName = ProviderName.SqlServer2008; - break; - case SqlServerVersion.v2012: - providerName = ProviderName.SqlServer2012; - break; - default: - throw new ArgumentOutOfRangeException($"Version '{version}' is not supported."); - } - - return new SqlServerDataProvider(providerName, version); + return DataProvider.SqlServer.SqlServerTools.GetDataProvider(version, SqlServerProvider.MicrosoftDataSqlClient); } /// @@ -367,23 +338,7 @@ protected virtual IDataProvider CreatePostgreSqlProvider(PostgreSQLVersion versi if (!string.IsNullOrEmpty(connectionString)) return DataConnection.GetDataProvider(ProviderName.PostgreSQL, connectionString!)!; - string providerName; - switch (version) - { - case PostgreSQLVersion.v92: - providerName = ProviderName.PostgreSQL92; - break; - case PostgreSQLVersion.v93: - providerName = ProviderName.PostgreSQL93; - break; - case PostgreSQLVersion.v95: - providerName = ProviderName.PostgreSQL95; - break; - default: - throw new ArgumentOutOfRangeException(nameof(version), version, null); - } - - return new PostgreSQLDataProvider(providerName, version); + return PostgreSQLTools.GetDataProvider(version); } /// diff --git a/Tests/LinqToDB.EntityFrameworkCore.BaseTests/ForMappingTestsBase.cs b/Tests/LinqToDB.EntityFrameworkCore.BaseTests/ForMappingTestsBase.cs index 255f988..b66fca8 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.BaseTests/ForMappingTestsBase.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.BaseTests/ForMappingTestsBase.cs @@ -109,12 +109,12 @@ public virtual async Task TestUIntTable() } [Test] - public virtual void TestAmbiguousProperties() + public virtual async Task TestAmbiguousProperties() { using var context = CreateContext(); - FluentActions.Awaiting(() => context.WithDuplicateProperties.Where(x => x.Value == 1) - .ToArrayAsyncLinqToDB()).Should().NotThrow(); + await FluentActions.Awaiting(() => context.WithDuplicateProperties.Where(x => x.Value == 1) + .ToArrayAsyncLinqToDB()).Should().NotThrowAsync(); } } diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 361df91..d0cca1f 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -59,12 +59,7 @@ stages: displayName: Generate nuspec condition: and(succeeded(), or(eq(variables['Build.SourceBranchName'], 'release.3'), eq(variables['Build.SourceBranchName'], 'version3'))) - - task: NuGetToolInstaller@0 - inputs: - versionSpec: '5.x' - workingDirectory: $(Build.SourcesDirectory)/NuGet - displayName: Install nuget - condition: and(succeeded(), or(eq(variables['Build.SourceBranchName'], 'release.3'), eq(variables['Build.SourceBranchName'], 'version3'))) + - task: NuGetToolInstaller@1 - task: CmdLine@2 inputs: From 6543e5618a24f3e4b51b2a747fcb01559299d491 Mon Sep 17 00:00:00 2001 From: Svyatoslav Danyliv Date: Wed, 25 May 2022 11:13:52 +0300 Subject: [PATCH 3/4] Bump to version 3.19.0 --- Build/linq2db.Default.props | 2 +- Directory.Packages.props | 4 ++-- azure-pipelines.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Build/linq2db.Default.props b/Build/linq2db.Default.props index 1485967..18342b9 100644 --- a/Build/linq2db.Default.props +++ b/Build/linq2db.Default.props @@ -1,6 +1,6 @@  - 3.18.0 + 3.19.0 Svyatoslav Danyliv, Igor Tkachev, Dmitry Lukashenko, Ilya Chudin Linq to DB diff --git a/Directory.Packages.props b/Directory.Packages.props index 80bf2e7..029d6ab 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,8 +5,8 @@ - - + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d0cca1f..5427540 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,8 +1,8 @@ variables: solution: 'linq2db.EFCore.sln' build_configuration: 'Release' - assemblyVersion: 3.18.0 - nugetVersion: 3.18.0 + assemblyVersion: 3.19.0 + nugetVersion: 3.19.0 artifact_nugets: 'nugets' # build on commits to important branches (master + release branches): From 6b012ff97bde442bf4d880411b858eae2a9daa99 Mon Sep 17 00:00:00 2001 From: Svyatoslav Danyliv Date: Mon, 30 May 2022 12:26:56 +0300 Subject: [PATCH 4/4] Updated to linq2db 4.0.1 --- Directory.Packages.props | 4 ++-- NuGet/linq2db.EntityFrameworkCore.nuspec | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 029d6ab..e387ee6 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -5,8 +5,8 @@ - - + + diff --git a/NuGet/linq2db.EntityFrameworkCore.nuspec b/NuGet/linq2db.EntityFrameworkCore.nuspec index a9fbc69..b7892a5 100644 --- a/NuGet/linq2db.EntityFrameworkCore.nuspec +++ b/NuGet/linq2db.EntityFrameworkCore.nuspec @@ -16,7 +16,7 @@ - +