Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<VersionPrefix>11.0.0-preview.1</VersionPrefix>
<TargetFramework>net10.0</TargetFramework>
<TargetFramework>net11.0</TargetFramework>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Expand Down
14 changes: 7 additions & 7 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<EFCoreVersion>10.0.0</EFCoreVersion>
<MicrosoftExtensionsVersion>10.0.0</MicrosoftExtensionsVersion>
<EFCoreVersion>11.0.0-preview.1.26104.118</EFCoreVersion>
<MicrosoftExtensionsVersion>11.0.0-preview.1.26104.118</MicrosoftExtensionsVersion>
<NpgsqlVersion>10.0.0</NpgsqlVersion>
</PropertyGroup>

Expand All @@ -10,11 +10,11 @@
Dependencies on EF preview versions should be locked to a specific version (as provider-facing breaking changes are frequent).
For released versions, depend on anything in the current major version to allow users to update to higher patch versions.
-->
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[10.0.0]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[10.0.0]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="[10.0.0]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Version="[10.0.0]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="[10.0.0]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="[$(EFCoreVersion)]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="[$(EFCoreVersion)]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="[$(EFCoreVersion)]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Version="[$(EFCoreVersion)]" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="[$(EFCoreVersion)]" />

<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="$(MicrosoftExtensionsVersion)" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="$(MicrosoftExtensionsVersion)" />
Expand Down
4 changes: 2 additions & 2 deletions NuGet.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="dotnet10" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json" />
<add key="dotnet11" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11/nuget/v3/index.json" />
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
<add key="npgsql-vnext" value="https://www.myget.org/F/npgsql-vnext/api/v3/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
Expand All @@ -18,7 +18,7 @@
<package pattern="Npgsql" />
<package pattern="Npgsql.*" />
</packageSource>
<packageSource key="dotnet10">
<packageSource key="dotnet11">
<package pattern="*" />
</packageSource>
</packageSourceMapping>
Expand Down
237 changes: 0 additions & 237 deletions test/EFCore.PG.FunctionalTests/BuiltInDataTypesNpgsqlTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -719,212 +719,10 @@ private static void AssertNullMappedNullableDataTypes(MappedNullableDataTypes en
Assert.Null(entity.Mood);
}

public override async Task Can_query_with_null_parameters_using_any_nullable_data_type()
{
using (var context = CreateContext())
{
context.Set<BuiltInNullableDataTypes>().Add(
new BuiltInNullableDataTypes { Id = 711 });

Assert.Equal(1, await context.SaveChangesAsync());
}

using (var context = CreateContext())
{
var entity = (await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711).ToListAsync()).Single();

short? param1 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableInt16 == param1).ToListAsync())
.Single());
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && (long?)e.TestNullableInt16 == param1)
.ToListAsync())
.Single());

int? param2 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableInt32 == param2).ToListAsync())
.Single());

long? param3 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableInt64 == param3).ToListAsync())
.Single());

double? param4 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableDouble == param4).ToListAsync())
.Single());

decimal? param5 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableDecimal == param5).ToListAsync())
.Single());

DateTime? param6 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableDateTime == param6).ToListAsync())
.Single());

// We don't support DateTimeOffset

TimeSpan? param8 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableTimeSpan == param8).ToListAsync())
.Single());

float? param9 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableSingle == param9).ToListAsync())
.Single());

bool? param10 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableBoolean == param10).ToListAsync())
.Single());

// We don't support byte

Enum64? param12 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.Enum64 == param12).ToListAsync()).Single());

Enum32? param13 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.Enum32 == param13).ToListAsync()).Single());

Enum16? param14 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.Enum16 == param14).ToListAsync()).Single());

Enum8? param15 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.Enum8 == param15).ToListAsync()).Single());

var entityType = context.Model.FindEntityType(typeof(BuiltInNullableDataTypes));
if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.TestNullableUnsignedInt16)) is not null)
{
ushort? param16 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableUnsignedInt16 == param16)
.ToListAsync())
.Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.TestNullableUnsignedInt32)) is not null)
{
uint? param17 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableUnsignedInt32 == param17)
.ToListAsync())
.Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.TestNullableUnsignedInt64)) is not null)
{
ulong? param18 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableUnsignedInt64 == param18)
.ToListAsync())
.Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.TestNullableCharacter)) is not null)
{
char? param19 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableCharacter == param19)
.ToListAsync())
.Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.TestNullableSignedByte)) is not null)
{
sbyte? param20 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.TestNullableSignedByte == param20)
.ToListAsync())
.Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.EnumU64)) is not null)
{
EnumU64? param21 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.EnumU64 == param21).ToListAsync()).Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.EnumU32)) is not null)
{
EnumU32? param22 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.EnumU32 == param22).ToListAsync()).Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.EnumU16)) is not null)
{
EnumU16? param23 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.EnumU16 == param23).ToListAsync()).Single());
}

if (entityType.FindProperty(nameof(BuiltInNullableDataTypes.EnumS8)) is not null)
{
EnumS8? param24 = null;
Assert.Same(
entity,
(await context.Set<BuiltInNullableDataTypes>().Where(e => e.Id == 711 && e.EnumS8 == param24).ToListAsync()).Single());
}
}
}

[ConditionalFact(Skip = "DateTimeOffset with non-zero offset, https://github.com/dotnet/efcore/issues/26068")]
public override Task Can_insert_and_read_back_all_nullable_data_types_with_values_set_to_non_null()
=> Task.CompletedTask;

[ConditionalFact(Skip = "DateTimeOffset with non-zero offset, https://github.com/dotnet/efcore/issues/26068")]
public override Task Can_insert_and_read_back_non_nullable_backed_data_types()
=> Task.CompletedTask;

[ConditionalFact(Skip = "DateTimeOffset with non-zero offset, https://github.com/dotnet/efcore/issues/26068")]
public override Task Can_insert_and_read_back_nullable_backed_data_types()
=> Task.CompletedTask;

[ConditionalFact(Skip = "DateTimeOffset with non-zero offset, https://github.com/dotnet/efcore/issues/26068")]
public override Task Can_insert_and_read_back_object_backed_data_types()
=> Task.CompletedTask;

[ConditionalFact(Skip = "DateTimeOffset with non-zero offset, https://github.com/dotnet/efcore/issues/26068")]
public override Task Can_query_using_any_data_type_nullable_shadow()
=> Task.CompletedTask;

[ConditionalFact(Skip = "DateTimeOffset with non-zero offset, https://github.com/dotnet/efcore/issues/26068")]
public override Task Can_query_using_any_data_type_shadow()
=> Task.CompletedTask;

[ConditionalFact]
public void Sum_Conversions()
{
Expand Down Expand Up @@ -1017,36 +815,17 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
// supported.
modelBuilder.Entity<BuiltInDataTypes>().Property(b => b.TestDateTime)
.HasColumnType("timestamp without time zone");
modelBuilder.Entity<BuiltInNullableDataTypes>().Property(b => b.TestNullableDateTime)
.HasColumnType("timestamp without time zone");
modelBuilder.Entity<BuiltInNullableDataTypesShadow>().Property(nameof(BuiltInNullableDataTypes.TestNullableDateTime))
.HasColumnType("timestamp without time zone");
modelBuilder.Entity<ObjectBackedDataTypes>().Property(b => b.DateTime)
.HasColumnType("timestamp without time zone");
modelBuilder.Entity<NullableBackedDataTypes>().Property(b => b.DateTime)
.HasColumnType("timestamp without time zone");
modelBuilder.Entity<NonNullableBackedDataTypes>().Property(b => b.DateTime)
.HasColumnType("timestamp without time zone");

// We don't support DateTimeOffset with non-zero offset, so we need to override the seeding data
modelBuilder.Entity<BuiltInDataTypes>().Metadata.GetSeedData()
.Single(t => (int)t[nameof(BuiltInDataTypes.Id)] == 13)[nameof(BuiltInDataTypes.TestDateTimeOffset)]
= new DateTimeOffset(DateTime.Parse("01/01/2000 12:34:56"), TimeSpan.Zero);

modelBuilder.Entity<BuiltInNullableDataTypes>().Metadata.GetSeedData()
.Single(t => (int)t[nameof(BuiltInDataTypes.Id)] == 13)[nameof(BuiltInNullableDataTypes.TestNullableDateTimeOffset)]
= new DateTimeOffset(DateTime.Parse("01/01/2000 12:34:56"), TimeSpan.Zero);

modelBuilder.Entity<ObjectBackedDataTypes>().Metadata.GetSeedData()
.Single()[nameof(ObjectBackedDataTypes.DateTimeOffset)] = new DateTimeOffset(new DateTime(), TimeSpan.Zero);

modelBuilder.Entity<NullableBackedDataTypes>().Metadata.GetSeedData()
.Single()[nameof(NullableBackedDataTypes.DateTimeOffset)]
= new DateTimeOffset(DateTime.Parse("01/01/2000 12:34:56"), TimeSpan.Zero);

modelBuilder.Entity<NonNullableBackedDataTypes>().Metadata.GetSeedData()
.Single()[nameof(NonNullableBackedDataTypes.DateTimeOffset)] = new DateTimeOffset(new DateTime(), TimeSpan.Zero);

modelBuilder.Entity<BuiltInDataTypes>(
b =>
{
Expand All @@ -1063,22 +842,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
//b.Ignore(dt => dt.EnumS8);
});

modelBuilder.Entity<BuiltInNullableDataTypes>(
b =>
{
b.Ignore(dt => dt.TestNullableUnsignedInt16);
b.Ignore(dt => dt.TestNullableUnsignedInt32);
b.Ignore(dt => dt.TestNullableUnsignedInt64);
b.Ignore(dt => dt.TestNullableCharacter);
b.Ignore(dt => dt.TestNullableSignedByte);
b.Ignore(dt => dt.TestNullableDateTimeOffset);
b.Ignore(dt => dt.TestNullableByte);
//b.Ignore(dt => dt.EnumU16);
//b.Ignore(dt => dt.EnumU32);
//b.Ignore(dt => dt.EnumU64);
//b.Ignore(dt => dt.EnumS8);
});

modelBuilder.Entity<MappedDataTypes>(
b =>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,19 @@ public class NonSharedModelBulkUpdatesNpgsqlTest(NonSharedFixture fixture) : Non
protected override ITestStoreFactory TestStoreFactory
=> NpgsqlTestStoreFactory.Instance;

[ConditionalFact]
public virtual void Check_all_tests_overridden()
=> TestHelpers.AssertAllMethodsOverridden(GetType());

public override async Task Update_complex_type_property_with_view_mapping(bool async)
{
await base.Update_complex_type_property_with_view_mapping(async);

AssertSql(
"""
@p='6'

UPDATE "Blogs" AS b
SET "ComplexThing_Prop1" = @p
""");
}

public override async Task Delete_aggregate_root_when_eager_loaded_owned_collection(bool async)
{
Expand Down Expand Up @@ -270,12 +280,24 @@ public override async Task Update_complex_type_with_view_mapping(bool async)
await base.Update_complex_type_with_view_mapping(async);

// #34706
AssertSql();
AssertSql(
"""
@complex_type_p_Prop1='3' (Nullable = true)
@complex_type_p_Prop2='4' (Nullable = true)

UPDATE "Blogs" AS b
SET "ComplexThing_Prop1" = @complex_type_p_Prop1,
"ComplexThing_Prop2" = @complex_type_p_Prop2
""");
}

private void AssertSql(params string[] expected)
=> TestSqlLoggerFactory.AssertBaseline(expected);

private void AssertExecuteUpdateSql(params string[] expected)
=> TestSqlLoggerFactory.AssertBaseline(expected, forUpdate: true);

[ConditionalFact]
public virtual void Check_all_tests_overridden()
=> TestHelpers.AssertAllMethodsOverridden(GetType());
}
Loading
Loading