Skip to content
Closed
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
4 changes: 2 additions & 2 deletions global.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"sdk": {
"version": "10.0.100",
"version": "11.0.100-preview.1",
"rollForward": "latestMinor",
"allowPrerelease": false
"allowPrerelease": true
}
}
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,6 +5,20 @@ public class NonSharedModelBulkUpdatesNpgsqlTest(NonSharedFixture fixture) : Non
protected override ITestStoreFactory TestStoreFactory
=> NpgsqlTestStoreFactory.Instance;


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
""");
}

[ConditionalFact]
public virtual void Check_all_tests_overridden()
=> TestHelpers.AssertAllMethodsOverridden(GetType());
Expand Down Expand Up @@ -270,7 +284,15 @@ 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)
Expand Down
Loading
Loading