diff --git a/Directory.Packages.props b/Directory.Packages.props index a4ada7f..743c1a2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,12 +1,12 @@  - - + + - + - - + + @@ -19,7 +19,7 @@ - + diff --git a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs index 88e714e..11e71cf 100644 --- a/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs +++ b/Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs @@ -920,7 +920,7 @@ TransformInfo LocalTransform(Expression e) methodCall.Arguments[1]), false, true); } - if (typeof(IQueryable<>).IsSameOrParentOf(methodCall.Type)) + if (typeof(IQueryable<>).IsSameOrParentOf(methodCall.Type) && methodCall.Type.Assembly != typeof(LinqExtensions).Assembly) { if (null == methodCall.Find(nonEvaluatableParameters, (c, t) => t.NodeType == ExpressionType.Parameter && c.Contains(t))) diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.csproj b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.csproj index 8eb3040..06d4a21 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.csproj +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.csproj @@ -4,10 +4,7 @@ - - - - + diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs index 8a19879..0a9e740 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs @@ -32,11 +32,19 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) entity.ForNpgsqlUseXminAsConcurrencyToken(); }); + modelBuilder.Entity(e => + { + e.Property(e => e.Timestamp1).HasColumnType("timestamp"); + e.Property(e => e.Timestamp2).HasColumnType("timestamp"); + e.Property(e => e.TimestampTZ1).HasColumnType("timestamp with time zone"); + e.Property(e => e.TimestampTZ2).HasColumnType("timestamp with time zone"); + e.Property(e => e.TimestampTZ3).HasColumnType("timestamp with time zone"); + }); } public virtual DbSet Events { get; set; } = null!; public virtual DbSet EntityWithArrays { get; set; } = null!; public virtual DbSet EntityWithXmin { get; set; } = null!; - + public virtual DbSet TimeStamps { get; set; } = null!; } } diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/TimeStampEntity.cs b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/TimeStampEntity.cs new file mode 100644 index 0000000..d46efcd --- /dev/null +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/TimeStampEntity.cs @@ -0,0 +1,15 @@ +using System; +using NodaTime; + +namespace LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.Models.NpgSqlEntities +{ + public class TimeStampEntity + { + public int Id { get; set; } + public DateTime Timestamp1 { get; set; } + public LocalDateTime Timestamp2 { get; set; } + public DateTime TimestampTZ1 { get; set; } + public DateTimeOffset TimestampTZ2 { get; set; } + public Instant TimestampTZ3 { get; set; } + } +} diff --git a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs index 3dc4d1d..cc4e06b 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs @@ -6,6 +6,7 @@ using LinqToDB.EntityFrameworkCore.BaseTests; using LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.Models.NpgSqlEntities; using Microsoft.EntityFrameworkCore; +using NodaTime; using NUnit.Framework; namespace LinqToDB.EntityFrameworkCore.PostgreSQL.Tests @@ -23,10 +24,9 @@ static NpgSqlTests() public NpgSqlTests() { var optionsBuilder = new DbContextOptionsBuilder(); - //new SqlServerDbContextOptionsBuilder(optionsBuilder); - //optionsBuilder.UseNpgsql("Server=DBHost;Port=5432;Database=TestData;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;"); - optionsBuilder.UseNpgsql("Server=localhost;Port=5415;Database=TestData;User Id=postgres;Password=Password12!;Pooling=true;MinPoolSize=10;MaxPoolSize=100;"); + //optionsBuilder.UseNpgsql("Server=DBHost;Port=5432;Database=TestData;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;", o => o.UseNodaTime()); + optionsBuilder.UseNpgsql("Server=localhost;Port=5415;Database=TestData;User Id=postgres;Password=Password12!;Pooling=true;MinPoolSize=10;MaxPoolSize=100;", o => o.UseNodaTime()); optionsBuilder.UseLoggerFactory(TestUtils.LoggerFactory); _options = optionsBuilder.Options; @@ -102,7 +102,6 @@ public void TestConcurrencyToken() db.BulkCopy(toInsert); } - [Test] public void TestUnnest() { @@ -120,6 +119,5 @@ where Sql.Ext.PostgreSQL().Overlaps(m.Guids, guids) query.Invoking(q => q.ToArray()).Should().NotThrow(); } - } } diff --git a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/IssueTests.cs b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/IssueTests.cs index c650d2c..bd67213 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/IssueTests.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/IssueTests.cs @@ -1,5 +1,6 @@ using System.Linq; using FluentAssertions; +using LinqToDB.DataProvider.SqlServer; using LinqToDB.EntityFrameworkCore.BaseTests; using LinqToDB.EntityFrameworkCore.SqlServer.Tests.Models.IssueModel; using Microsoft.EntityFrameworkCore; @@ -79,5 +80,12 @@ from p in ctx.Patents.Include(p => p.Assessment) Assert.That(db.LastQuery, Does.Not.Contain("INNER")); } + [Test] + public void Issue321Test() + { + using var ctx = CreateContext(); + + var _ = ctx.Patents.AsSqlServer().ToLinqToDB().ToArray(); + } } } diff --git a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CategoriesMap.cs b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CategoriesMap.cs index a434f03..707e573 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CategoriesMap.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CategoriesMap.cs @@ -22,9 +22,9 @@ public override void Configure(EntityTypeBuilder builder) .IsRequired() .HasMaxLength(15); - builder.Property(e => e.Description).HasColumnType("ntext"); + builder.Property(e => e.Description).HasColumnType("nvarchar(max)"); - builder.Property(e => e.Picture).HasColumnType("image"); + builder.Property(e => e.Picture).HasColumnType("varbinary(max)"); } } } diff --git a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CustomerDemographicsMap.cs b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CustomerDemographicsMap.cs index c2338a2..0c4cc27 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CustomerDemographicsMap.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CustomerDemographicsMap.cs @@ -18,7 +18,7 @@ public override void Configure(EntityTypeBuilder builder) .HasMaxLength(10) .ValueGeneratedNever(); - builder.Property(e => e.CustomerDesc).HasColumnType("ntext"); + builder.Property(e => e.CustomerDesc).HasColumnType("nvarchar(max)"); } } } diff --git a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/EmployeesMap.cs b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/EmployeesMap.cs index 207eab1..37105ad 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/EmployeesMap.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/EmployeesMap.cs @@ -43,9 +43,9 @@ public override void Configure(EntityTypeBuilder builder) .IsRequired() .HasMaxLength(20); - builder.Property(e => e.Notes).HasColumnType("ntext"); + builder.Property(e => e.Notes).HasColumnType("nvarchar(max)"); - builder.Property(e => e.Photo).HasColumnType("image"); + builder.Property(e => e.Photo).HasColumnType("varbinary(max)"); builder.Property(e => e.PhotoPath).HasMaxLength(255); diff --git a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/SuppliersMap.cs b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/SuppliersMap.cs index f206235..0e41d66 100644 --- a/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/SuppliersMap.cs +++ b/Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/SuppliersMap.cs @@ -37,7 +37,7 @@ public override void Configure(EntityTypeBuilder builder) builder.Property(e => e.Fax).HasMaxLength(24); - builder.Property(e => e.HomePage).HasColumnType("ntext"); + builder.Property(e => e.HomePage).HasColumnType("nvarchar(max)"); builder.Property(e => e.Phone).HasMaxLength(24); diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fbbddf6..56a7379 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,8 +1,8 @@ variables: solution: 'linq2db.EFCore.sln' build_configuration: 'Release' - assemblyVersion: 2.10.0 - nugetVersion: 2.10.0 + assemblyVersion: 2.11.0 + nugetVersion: 2.11.0 artifact_nugets: 'nugets' # build on commits to important branches (master + release branches):