From 51d7df968923bbda333f6c63781242d91d7114d6 Mon Sep 17 00:00:00 2001 From: Sergei Pavlov Date: Fri, 21 Feb 2025 10:51:42 -0800 Subject: [PATCH 1/2] Make code .NET10-compatible --- Directory.Packages.props | 6 +++--- .../Issues/IssueJira0187_TypeCastInContain.cs | 8 ++++---- .../IssueJira0743_IncludeDoesNotWorkWithSubqueries.cs | 2 +- .../Linq/NullableEnumMaterializationTest.cs | 6 +++--- Orm/Xtensive.Orm/Orm/QueryableExtensions.cs | 6 +++++- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 00dcbff4fc..93792cb207 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,9 +1,9 @@ - 9.0.0 - 10.0.0 + 9.0.2 + 9.0.2 $(MSExtVersion) - 10.0.0 + 9.0.2 diff --git a/Orm/Xtensive.Orm.Tests/Issues/IssueJira0187_TypeCastInContain.cs b/Orm/Xtensive.Orm.Tests/Issues/IssueJira0187_TypeCastInContain.cs index 2f45ecabf3..b4b41436da 100644 --- a/Orm/Xtensive.Orm.Tests/Issues/IssueJira0187_TypeCastInContain.cs +++ b/Orm/Xtensive.Orm.Tests/Issues/IssueJira0187_TypeCastInContain.cs @@ -55,14 +55,14 @@ protected override DomainConfiguration BuildConfiguration() [Test] public void ParentsContainsChildWithImplicitCastTest() { - var parents = GlobalSession.Query.All().ToArray(); + IReadOnlyList parents = GlobalSession.Query.All().ToArray(); var result = GlobalSession.Query.All().Where(child => parents.Contains(child)).ToArray(); } [Test] public void ParentsContainsChildWithExplicitCastTest() { - var parents = GlobalSession.Query.All().ToArray(); + IReadOnlyList parents = GlobalSession.Query.All().ToArray(); var result = GlobalSession.Query.All().Where(child => parents.Contains(child as Parent)).ToArray(); } @@ -76,7 +76,7 @@ public void ChildInParentsTest() [Test] public void ChildContainsParentWithImplicitCast() { - var children = GlobalSession.Query.All().ToArray(); + IReadOnlyList children = GlobalSession.Query.All().ToArray(); var result = GlobalSession.Query.All().Where(a => children.Contains(a.Parent)).ToArray(); } @@ -94,4 +94,4 @@ public void ParentInChildrenTest() var result = GlobalSession.Query.All().Where(a => a.Parent.In(children)).ToArray(); } } -} \ No newline at end of file +} diff --git a/Orm/Xtensive.Orm.Tests/Issues/IssueJira0743_IncludeDoesNotWorkWithSubqueries.cs b/Orm/Xtensive.Orm.Tests/Issues/IssueJira0743_IncludeDoesNotWorkWithSubqueries.cs index 4ba270bbfd..c41af4f579 100644 --- a/Orm/Xtensive.Orm.Tests/Issues/IssueJira0743_IncludeDoesNotWorkWithSubqueries.cs +++ b/Orm/Xtensive.Orm.Tests/Issues/IssueJira0743_IncludeDoesNotWorkWithSubqueries.cs @@ -339,7 +339,7 @@ public void Case21Test() { using (var session = Domain.OpenSession()) using (var tx = session.OpenTransaction()) { - var values = new[] { MyEnum.Bar, MyEnum.Foo }; + IReadOnlyList values = [MyEnum.Bar, MyEnum.Foo]; var result = session.Query.All() .Select(e => values.Contains(e.List.FirstOrDefault().Link.Value3.Value)).ToArray(); diff --git a/Orm/Xtensive.Orm.Tests/Linq/NullableEnumMaterializationTest.cs b/Orm/Xtensive.Orm.Tests/Linq/NullableEnumMaterializationTest.cs index 92a799f91a..9471aafd0e 100644 --- a/Orm/Xtensive.Orm.Tests/Linq/NullableEnumMaterializationTest.cs +++ b/Orm/Xtensive.Orm.Tests/Linq/NullableEnumMaterializationTest.cs @@ -67,7 +67,7 @@ public void SelectContainsTest() { using (var session = Domain.OpenSession()) using (var tx = session.OpenTransaction()) { - var values = new[] {MyEnum.Bar, MyEnum.Foo}; + IReadOnlyList values = [MyEnum.Bar, MyEnum.Foo]; var query = session.Query.All() .Select(e => new { Id = e.Id, @@ -101,7 +101,7 @@ public void SelectContainsWithRefTest() { using (var session = Domain.OpenSession()) using (var tx = session.OpenTransaction()) { - var values = new[] {MyEnum.Bar, MyEnum.Foo}; + IReadOnlyList values = [MyEnum.Bar, MyEnum.Foo]; var query = session.Query.All() .Select(e => new { Id = e.Id, @@ -130,4 +130,4 @@ public void SelectConditionWithRefTest() } } } -} \ No newline at end of file +} diff --git a/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs b/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs index 7f6f316743..5c3ecafa5c 100644 --- a/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs +++ b/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs @@ -307,6 +307,10 @@ public static bool In(this T source, IncludeAlgorithm algorithm, IEnumerable< values == null ? false : values.Contains(source); #pragma warning restore IDE0060 // Remove unused parameter + [Obsolete("Use '.OuterJoin()' extension instead.")] + public static IQueryable LeftJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) => + OuterJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector); + /// /// Correlates the elements of two sequences based on matching keys. /// @@ -322,7 +326,7 @@ public static bool In(this T source, IncludeAlgorithm algorithm, IEnumerable< /// /// One of provided arguments is . /// Queryable is not a query. - public static IQueryable LeftJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) + public static IQueryable OuterJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) { ArgumentNullException.ThrowIfNull(outer); ArgumentNullException.ThrowIfNull(inner); From 2c2606dff7b24d15ae89addb67e5bdbaaa53a36e Mon Sep 17 00:00:00 2001 From: Sergei Pavlov Date: Fri, 21 Feb 2025 11:19:01 -0800 Subject: [PATCH 2/2] Rename to LeftOuterJoin() --- Orm/Xtensive.Orm/Orm/QueryableExtensions.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs b/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs index 5c3ecafa5c..59d84ed7a7 100644 --- a/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs +++ b/Orm/Xtensive.Orm/Orm/QueryableExtensions.cs @@ -307,9 +307,9 @@ public static bool In(this T source, IncludeAlgorithm algorithm, IEnumerable< values == null ? false : values.Contains(source); #pragma warning restore IDE0060 // Remove unused parameter - [Obsolete("Use '.OuterJoin()' extension instead.")] + [Obsolete("Use '.LeftOuterJoin()' extension instead.")] public static IQueryable LeftJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) => - OuterJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector); + LeftOuterJoin(outer, inner, outerKeySelector, innerKeySelector, resultSelector); /// /// Correlates the elements of two sequences based on matching keys. @@ -326,7 +326,7 @@ public static IQueryable LeftJoin(this I /// /// One of provided arguments is . /// Queryable is not a query. - public static IQueryable OuterJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) + public static IQueryable LeftOuterJoin(this IQueryable outer, IEnumerable inner, Expression> outerKeySelector, Expression> innerKeySelector, Expression> resultSelector) { ArgumentNullException.ThrowIfNull(outer); ArgumentNullException.ThrowIfNull(inner);