未验证 提交 e3253ba9 编写于 作者: S Shay Rojansky 提交者: GitHub

Sync dependencies (#2209) (#2240)

EF Core -> 7.0.0-preview.1.22071.1
Npgsql -> 7.0.0-preview.1-ci.20220123T182030
上级 50891e5a
<Project>
<PropertyGroup>
<EFCoreVersion>7.0.0-alpha.1.22058.1</EFCoreVersion>
<MicrosoftExtensionsVersion>7.0.0-alpha.1.22052.8</MicrosoftExtensionsVersion>
<NpgsqlVersion>7.0.0-preview.1-ci.20220109T124254</NpgsqlVersion>
<EFCoreVersion>7.0.0-preview.1.22071.1</EFCoreVersion>
<MicrosoftExtensionsVersion>7.0.0-alpha.1.22066.4</MicrosoftExtensionsVersion>
<NpgsqlVersion>7.0.0-preview.1-ci.20220123T182030</NpgsqlVersion>
</PropertyGroup>
<ItemGroup>
......
......@@ -211,7 +211,7 @@ public override void InsertDataOperation_required_args()
base.InsertDataOperation_required_args();
AssertSql(
@"INSERT INTO ""People"" (""First Name"")
@"INSERT INTO dbo.""People"" (""First Name"")
VALUES ('John');
");
}
......@@ -221,7 +221,7 @@ public override void InsertDataOperation_required_args_composite()
base.InsertDataOperation_required_args_composite();
AssertSql(
@"INSERT INTO ""People"" (""First Name"", ""Last Name"")
@"INSERT INTO dbo.""People"" (""First Name"", ""Last Name"")
VALUES ('John', 'Snow');
");
}
......@@ -231,9 +231,9 @@ public override void InsertDataOperation_required_args_multiple_rows()
base.InsertDataOperation_required_args_multiple_rows();
AssertSql(
@"INSERT INTO ""People"" (""First Name"")
@"INSERT INTO dbo.""People"" (""First Name"")
VALUES ('John');
INSERT INTO ""People"" (""First Name"")
INSERT INTO dbo.""People"" (""First Name"")
VALUES ('Daenerys');
");
}
......@@ -551,4 +551,4 @@ public NpgsqlMigrationsSqlGeneratorTest()
}
protected override string GetGeometryCollectionStoreType() => "GEOMETRY(GEOMETRYCOLLECTION)";
}
\ No newline at end of file
}
using Microsoft.EntityFrameworkCore.TestModels.Northwind;
using Xunit.Sdk;
namespace Npgsql.EntityFrameworkCore.PostgreSQL.Query;
......@@ -93,6 +94,81 @@ public override Task Add_minutes_on_constant_value(bool async)
assertOrder: true,
elementAsserter: (e, a) => AssertEqual(e.Test, a.Test));
public override async Task Client_code_using_instance_method_throws(bool async)
{
Assert.Equal(
CoreStrings.ClientProjectionCapturingConstantInMethodInstance(
"Npgsql.EntityFrameworkCore.PostgreSQL.Query.NorthwindMiscellaneousQueryNpgsqlTest",
"InstanceMethod"),
(await Assert.ThrowsAsync<InvalidOperationException>(
() => base.Client_code_using_instance_method_throws(async))).Message);
AssertSql();
}
public override async Task Client_code_using_instance_in_static_method(bool async)
{
Assert.Equal(
CoreStrings.ClientProjectionCapturingConstantInMethodArgument(
"Npgsql.EntityFrameworkCore.PostgreSQL.Query.NorthwindMiscellaneousQueryNpgsqlTest",
"StaticMethod"),
(await Assert.ThrowsAsync<InvalidOperationException>(
() => base.Client_code_using_instance_in_static_method(async))).Message);
AssertSql();
}
public override async Task Client_code_using_instance_in_anonymous_type(bool async)
{
Assert.Equal(
CoreStrings.ClientProjectionCapturingConstantInTree(
"Npgsql.EntityFrameworkCore.PostgreSQL.Query.NorthwindMiscellaneousQueryNpgsqlTest"),
(await Assert.ThrowsAsync<InvalidOperationException>(
() => base.Client_code_using_instance_in_anonymous_type(async))).Message);
AssertSql();
}
public override async Task Client_code_unknown_method(bool async)
{
await AssertTranslationFailedWithDetails(
() => base.Client_code_unknown_method(async),
CoreStrings.QueryUnableToTranslateMethod(
"Microsoft.EntityFrameworkCore.Query.NorthwindMiscellaneousQueryTestBase<Npgsql.EntityFrameworkCore.PostgreSQL.Query.NorthwindQueryNpgsqlFixture<Microsoft.EntityFrameworkCore.TestUtilities.NoopModelCustomizer>>",
nameof(UnknownMethod)));
AssertSql();
}
public override async Task Max_on_empty_sequence_throws(bool async)
{
await Assert.ThrowsAsync<InvalidOperationException>(() => base.Max_on_empty_sequence_throws(async));
AssertSql(
@"SELECT (
SELECT MAX(o.""OrderID"")
FROM ""Orders"" AS o
WHERE c.""CustomerID"" = o.""CustomerID"") AS ""Max""
FROM ""Customers"" AS c");
}
public override void Select_DTO_constructor_distinct_with_collection_projection_translated_to_server()
{
// Allow binding of expressions after projection has turned to client eval. Issue #24478.
Assert.Throws<TrueException>(
() => base.Select_DTO_constructor_distinct_with_collection_projection_translated_to_server());
AssertSql(
@"SELECT t.""CustomerID"", o0.""OrderID"", o0.""CustomerID"", o0.""EmployeeID"", o0.""OrderDate""
FROM (
SELECT DISTINCT o.""CustomerID""
FROM ""Orders"" AS o
WHERE o.""OrderID"" < 10300
) AS t
LEFT JOIN ""Orders"" AS o0 ON t.""CustomerID"" = o0.""CustomerID""
ORDER BY t.""CustomerID"" NULLS FIRST");
}
// TODO: Array tests can probably move to the dedicated ArrayQueryTest suite
#region Array contains
......@@ -278,4 +354,4 @@ private void AssertSql(params string[] expected)
private void AssertContainsSqlFragment(string expectedFragment)
=> Assert.Contains(Fixture.TestSqlLoggerFactory.SqlStatements, s => s.Contains(expectedFragment));
}
\ No newline at end of file
}
......@@ -19,6 +19,30 @@ public override async Task Select_datetime_DayOfWeek_component(bool async)
FROM ""Orders"" AS o");
}
public override async Task Correlated_collection_after_distinct_with_complex_projection_not_containing_original_identifier(bool async)
{
// Identifier set for Distinct. Issue #24440.
Assert.Equal(
RelationalStrings.InsufficientInformationToIdentifyElementOfCollectionJoin,
(await Assert.ThrowsAsync<InvalidOperationException>(
() => base.Correlated_collection_after_distinct_with_complex_projection_not_containing_original_identifier(async)))
.Message);
AssertSql();
}
public override async Task
SelectMany_with_collection_being_correlated_subquery_which_references_non_mapped_properties_from_inner_and_outer_entity(
bool async)
{
await AssertUnableToTranslateEFProperty(
() => base
.SelectMany_with_collection_being_correlated_subquery_which_references_non_mapped_properties_from_inner_and_outer_entity(
async));
AssertSql();
}
[ConditionalTheory(Skip = "https://github.com/dotnet/efcore/issues/27152")]
public override Task Reverse_in_subquery_via_pushdown(bool async)
=> base.Reverse_in_subquery_via_pushdown(async);
......
......@@ -12,6 +12,20 @@ public class NorthwindSetOperationsQueryNpgsqlTest
//Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper);
}
public override async Task Client_eval_Union_FirstOrDefault(bool async)
{
// Client evaluation in projection. Issue #16243.
Assert.Equal(
RelationalStrings.SetOperationsNotAllowedAfterClientEvaluation,
(await Assert.ThrowsAsync<InvalidOperationException>(
() => base.Client_eval_Union_FirstOrDefault(async))).Message);
AssertSql();
}
private void AssertSql(params string[] expected)
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
protected override void ClearLog()
=> Fixture.TestSqlLoggerFactory.Clear();
}
\ No newline at end of file
}
......@@ -136,6 +136,86 @@ public override Task Where_datetimeoffset_utcnow_component(bool async)
public override Task Where_datetimeoffset_utcnow(bool async)
=> Task.CompletedTask;
public override async Task Where_bitwise_xor(bool async)
{
// Cannot eval 'where (([c].CustomerID == \"ALFKI\") ^ True)'. Issue #16645.
await AssertTranslationFailed(() => base.Where_bitwise_xor(async));
AssertSql();
}
public override async Task Where_compare_constructed_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_constructed_equal(async));
AssertSql();
}
public override async Task Where_compare_constructed_multi_value_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_constructed_multi_value_equal(async));
AssertSql();
}
public override async Task Where_compare_constructed_multi_value_not_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_constructed_multi_value_not_equal(async));
AssertSql();
}
public override async Task Where_compare_tuple_constructed_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_tuple_constructed_equal(async));
AssertSql();
}
public override async Task Where_compare_tuple_constructed_multi_value_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_tuple_constructed_multi_value_equal(async));
AssertSql();
}
public override async Task Where_compare_tuple_constructed_multi_value_not_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_tuple_constructed_multi_value_not_equal(async));
AssertSql();
}
public override async Task Where_compare_tuple_create_constructed_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_tuple_create_constructed_equal(async));
AssertSql();
}
public override async Task Where_compare_tuple_create_constructed_multi_value_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_tuple_create_constructed_multi_value_equal(async));
AssertSql();
}
public override async Task Where_compare_tuple_create_constructed_multi_value_not_equal(bool async)
{
// Anonymous type to constant comparison. Issue #14672.
await AssertTranslationFailed(() => base.Where_compare_tuple_create_constructed_multi_value_not_equal(async));
AssertSql();
}
private void AssertSql(params string[] expected)
=> Fixture.TestSqlLoggerFactory.AssertBaseline(expected);
......
......@@ -5,4 +5,8 @@ namespace Npgsql.EntityFrameworkCore.PostgreSQL.Query;
public class SimpleQueryNpgsqlTest : SimpleQueryRelationalTestBase
{
protected override ITestStoreFactory TestStoreFactory => NpgsqlTestStoreFactory.Instance;
}
\ No newline at end of file
[ConditionalTheory(Skip = "https://github.com/dotnet/efcore/issues/27278")]
public override Task Aggregate_over_subquery_in_group_by_projection(bool async)
=> base.Aggregate_over_subquery_in_group_by_projection(async);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册