diff --git a/Tests/Linq/Tools/EntityServices/IdentityMapTests.cs b/Tests/Linq/Tools/EntityServices/IdentityMapTests.cs index 2c53e2fa91..6214cec5f6 100644 --- a/Tests/Linq/Tools/EntityServices/IdentityMapTests.cs +++ b/Tests/Linq/Tools/EntityServices/IdentityMapTests.cs @@ -121,7 +121,7 @@ public async Task CompiledQueryTest() var result1 = await query(db, default); var result2 = await query(db, default); - Assert.That(result2[0], Is.SameAs(result1[0])); + Assert.That(result1[0], Is.SameAs(result2[0])); } } } diff --git a/Tests/Linq/UserTests/Issue4390Tests.cs b/Tests/Linq/UserTests/Issue4390Tests.cs new file mode 100644 index 0000000000..3bbfe7f863 --- /dev/null +++ b/Tests/Linq/UserTests/Issue4390Tests.cs @@ -0,0 +1,68 @@ +using System.Linq; + +using LinqToDB; +using LinqToDB.Mapping; +using NUnit.Framework; + +using System; + +using FluentAssertions; + +namespace Tests.UserTests +{ + [TestFixture] + public class Issue4390Tests : TestBase + { + [Table] + public class InfeedAdviceDTO + { + [Column] public int Id { get; set; } + } + + [Table] + public class InventoryResourceDTO + { + [Column] public int InfeedAdviceID { get; set; } + } + public class MlogCombined1 + { + public InfeedAdviceDTO? InfeedAdvice { get; set; } + + public int? Count { get; set; } + } + + public class MlogCombined2 + { + public MlogCombined1? MlogCombined1 { get; set; } + } + + [Test] + public void Issue4390Test([IncludeDataSources(TestProvName.AllSQLite)] string context) + { + using (var db = GetDataContext(context)) + using (db.CreateLocalTable()) + using (db.CreateLocalTable()) + { + db.Insert(new InventoryResourceDTO() { InfeedAdviceID = 1 }); + db.Insert(new InfeedAdviceDTO() { Id = 1 }); + + var irs = from ir in db.GetTable() select ir; + + var qry = from infeed in db.GetTable() + join inventory in db.GetTable() on infeed.Id equals inventory.InfeedAdviceID + select new MlogCombined2 + { + MlogCombined1 = new MlogCombined1 + { + InfeedAdvice = infeed, + Count = irs.Count(x => x.InfeedAdviceID == infeed.Id), + } + }; + + var count = qry.Where(x => x.MlogCombined1 != null).Count(); + + count.Should().Be(1); + } + } + } +}