Skip to content
This repository was archived by the owner on Feb 1, 2025. It is now read-only.

Commit 6391f65

Browse files
committed
backport from v7
1 parent 51a8955 commit 6391f65

File tree

12 files changed

+85
-40
lines changed

12 files changed

+85
-40
lines changed

Directory.Packages.props

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<Project>
22
<ItemGroup>
3-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
4-
<PackageVersion Include="NUnit3TestAdapter" Version="4.3.1" />
3+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
4+
<PackageVersion Include="NUnit3TestAdapter" Version="4.4.2" />
55
<PackageVersion Include="NUnit" Version="3.13.3" />
6-
<PackageVersion Include="FluentAssertions" Version="6.10.0" />
6+
<PackageVersion Include="FluentAssertions" Version="6.11.0" />
77

8-
<PackageVersion Include="linq2db" Version="5.1.0" />
9-
<PackageVersion Include="linq2db.Tools" Version="5.1.0" />
8+
<PackageVersion Include="linq2db" Version="5.2.1" />
9+
<PackageVersion Include="linq2db.Tools" Version="5.2.1" />
1010

1111
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.1.1" />
1212

@@ -17,11 +17,11 @@
1717
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="6.0.0" />
1818

1919
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.2" />
20-
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.8" />
21-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.14" />
22-
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.14" />
20+
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" Version="6.0.8" />
21+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.16" />
22+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.16" />
2323

2424
<PackageVersion Include="EntityFrameworkCore.FSharp" Version="6.0.7" />
25-
<PackageVersion Include="FSharp.Core" Version="7.0.200" />
25+
<PackageVersion Include="FSharp.Core" Version="7.0.300" />
2626
</ItemGroup>
2727
</Project>

Source/LinqToDB.EntityFrameworkCore/LinqToDBForEFToolsImplDefault.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -916,7 +916,7 @@ TransformInfo LocalTransform(Expression e)
916916
break;
917917
}
918918

919-
if (typeof(IQueryable<>).IsSameOrParentOf(methodCall.Type))
919+
if (typeof(IQueryable<>).IsSameOrParentOf(methodCall.Type) && methodCall.Type.Assembly != typeof(LinqExtensions).Assembly)
920920
{
921921
if (null == methodCall.Find(nonEvaluatableParameters,
922922
(c, t) => t.NodeType == ExpressionType.Parameter && c.Contains(t)))

Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.csproj

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44

55
<ItemGroup>
66
<PackageReference Include="FluentAssertions" />
7-
</ItemGroup>
8-
9-
<ItemGroup>
10-
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" />
7+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" />
118
</ItemGroup>
129

1310
<ItemGroup>

Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/Models/NpgSqlEntities/NpgSqlEnititesContext.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,19 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
3030
entity.UseXminAsConcurrencyToken();
3131
});
3232

33+
modelBuilder.Entity<TimeStampEntity>(e =>
34+
{
35+
e.Property(e => e.Timestamp1).HasColumnType("timestamp");
36+
e.Property(e => e.Timestamp2).HasColumnType("timestamp");
37+
e.Property(e => e.TimestampTZ1).HasColumnType("timestamp with time zone");
38+
e.Property(e => e.TimestampTZ2).HasColumnType("timestamp with time zone");
39+
e.Property(e => e.TimestampTZ3).HasColumnType("timestamp with time zone");
40+
});
3341
}
3442

3543
public virtual DbSet<Event> Events { get; set; } = null!;
3644
public virtual DbSet<EntityWithArrays> EntityWithArrays { get; set; } = null!;
3745
public virtual DbSet<EntityWithXmin> EntityWithXmin { get; set; } = null!;
38-
46+
public virtual DbSet<TimeStampEntity> TimeStamps { get; set; } = null!;
3947
}
4048
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using NodaTime;
3+
4+
namespace LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.Models.NpgSqlEntities
5+
{
6+
public class TimeStampEntity
7+
{
8+
public int Id { get; set; }
9+
public DateTime Timestamp1 { get; set; }
10+
public LocalDateTime Timestamp2 { get; set; }
11+
public DateTime TimestampTZ1 { get; set; }
12+
public DateTimeOffset TimestampTZ2 { get; set; }
13+
public Instant TimestampTZ3 { get; set; }
14+
}
15+
}

Tests/LinqToDB.EntityFrameworkCore.PostgreSQL.Tests/NpgSqlTests.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using LinqToDB.EntityFrameworkCore.BaseTests;
77
using LinqToDB.EntityFrameworkCore.PostgreSQL.Tests.Models.NpgSqlEntities;
88
using Microsoft.EntityFrameworkCore;
9+
using NodaTime;
910
using NUnit.Framework;
1011

1112
namespace LinqToDB.EntityFrameworkCore.PostgreSQL.Tests
@@ -23,10 +24,9 @@ static NpgSqlTests()
2324
public NpgSqlTests()
2425
{
2526
var optionsBuilder = new DbContextOptionsBuilder<NpgSqlEnititesContext>();
26-
//new SqlServerDbContextOptionsBuilder(optionsBuilder);
2727

28-
//optionsBuilder.UseNpgsql("Server=DBHost;Port=5432;Database=TestData;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;");
29-
optionsBuilder.UseNpgsql("Server=localhost;Port=5415;Database=TestData;User Id=postgres;Password=Password12!;Pooling=true;MinPoolSize=10;MaxPoolSize=100;");
28+
//optionsBuilder.UseNpgsql("Server=DBHost;Port=5432;Database=TestData;User Id=postgres;Password=TestPassword;Pooling=true;MinPoolSize=10;MaxPoolSize=100;", o => o.UseNodaTime());
29+
optionsBuilder.UseNpgsql("Server=localhost;Port=5415;Database=TestData;User Id=postgres;Password=Password12!;Pooling=true;MinPoolSize=10;MaxPoolSize=100;", o => o.UseNodaTime());
3030
optionsBuilder.UseLoggerFactory(TestUtils.LoggerFactory);
3131

3232
_options = optionsBuilder.Options;
@@ -100,7 +100,6 @@ public void TestConcurrencyToken()
100100
db.BulkCopy(toInsert);
101101
}
102102

103-
104103
[Test]
105104
public void TestUnnest()
106105
{
@@ -119,5 +118,23 @@ where Sql.Ext.PostgreSQL().Overlaps(m.Guids, guids)
119118
query.Invoking(q => q.ToArray()).Should().NotThrow();
120119
}
121120

121+
[Test]
122+
public void TestDateTimeKind([Values] DateTimeKind kind)
123+
{
124+
using var db = CreateNpgSqlEntitiesContext();
125+
using var dc = db.CreateLinqToDBConnection();
126+
127+
var dt = new DateTime(DateTime.Now.Ticks, kind);
128+
var dto = DateTimeOffset.Now;
129+
var ins = Instant.FromDateTimeOffset(dto);
130+
var ldt = LocalDateTime.FromDateTime(DateTime.Now);
131+
132+
db.TimeStamps.Where(e => e.Timestamp1 == dt).ToLinqToDB().ToArray();
133+
db.TimeStamps.Where(e => e.Timestamp2 == ldt).ToLinqToDB().ToArray();
134+
db.TimeStamps.Where(e => e.TimestampTZ1 == dt).ToLinqToDB().ToArray();
135+
db.TimeStamps.Where(e => e.TimestampTZ2 == dto).ToLinqToDB().ToArray();
136+
db.TimeStamps.Where(e => e.TimestampTZ3 == ins).ToLinqToDB().ToArray();
137+
}
138+
122139
}
123140
}

Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/IssueTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Diagnostics.CodeAnalysis;
22
using System.Linq;
33
using FluentAssertions;
4+
using LinqToDB.DataProvider.SqlServer;
45
using LinqToDB.EntityFrameworkCore.BaseTests;
56
using LinqToDB.EntityFrameworkCore.SqlServer.Tests.Models.IssueModel;
67
using Microsoft.EntityFrameworkCore;
@@ -81,5 +82,12 @@ from p in ctx.Patents.Include(p => p.Assessment)
8182
Assert.That(db.LastQuery, Does.Not.Contain("INNER"));
8283
}
8384

85+
[Test]
86+
public void Issue321Test()
87+
{
88+
using var ctx = CreateContext();
89+
90+
var _ = ctx.Patents.AsSqlServer().ToLinqToDB().ToArray();
91+
}
8492
}
8593
}

Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CategoriesMap.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ public override void Configure(EntityTypeBuilder<Category> builder)
2222
.IsRequired()
2323
.HasMaxLength(15);
2424

25-
builder.Property(e => e.Description).HasColumnType("ntext");
25+
builder.Property(e => e.Description).HasColumnType("nvarchar(max)");
2626

27-
builder.Property(e => e.Picture).HasColumnType("image");
27+
builder.Property(e => e.Picture).HasColumnType("varbinary(max)");
2828
}
2929
}
3030
}

Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/CustomerDemographicsMap.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
namespace LinqToDB.EntityFrameworkCore.SqlServer.Tests.Models.Northwind.Mapping
66
{
7-
public class CustomerDemographicsMap : BaseEntityMap<CustomerDemographics>
8-
{
9-
public override void Configure(EntityTypeBuilder<CustomerDemographics> builder)
10-
{
11-
base.Configure(builder);
7+
public class CustomerDemographicsMap : BaseEntityMap<CustomerDemographics>
8+
{
9+
public override void Configure(EntityTypeBuilder<CustomerDemographics> builder)
10+
{
11+
base.Configure(builder);
1212

13-
builder.HasKey(e => e.CustomerTypeId)
14-
.IsClustered(false);
13+
builder.HasKey(e => e.CustomerTypeId)
14+
.IsClustered(false);
1515

16-
builder.Property(e => e.CustomerTypeId)
17-
.HasColumnName("CustomerTypeID")
18-
.HasMaxLength(10)
19-
.ValueGeneratedNever();
16+
builder.Property(e => e.CustomerTypeId)
17+
.HasColumnName("CustomerTypeID")
18+
.HasMaxLength(10)
19+
.ValueGeneratedNever();
2020

21-
builder.Property(e => e.CustomerDesc).HasColumnType("ntext");
22-
}
23-
}
21+
builder.Property(e => e.CustomerDesc).HasColumnType("nvarchar(max)");
22+
}
23+
}
2424
}

Tests/LinqToDB.EntityFrameworkCore.SqlServer.Tests/Models/Northwind.Mapping/EmployeesMap.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ public override void Configure(EntityTypeBuilder<Employee> builder)
4343
.IsRequired()
4444
.HasMaxLength(20);
4545

46-
builder.Property(e => e.Notes).HasColumnType("ntext");
46+
builder.Property(e => e.Notes).HasColumnType("nvarchar(max)");
4747

48-
builder.Property(e => e.Photo).HasColumnType("image");
48+
builder.Property(e => e.Photo).HasColumnType("varbinary(max)");
4949

5050
builder.Property(e => e.PhotoPath).HasMaxLength(255);
5151

0 commit comments

Comments
 (0)