|
1 | 1 | // Licensed to the .NET Foundation under one or more agreements.
|
2 | 2 | // The .NET Foundation licenses this file to you under the MIT license.
|
3 | 3 |
|
| 4 | +using Microsoft.EntityFrameworkCore.TestModels.ComplexTypeModel; |
| 5 | + |
4 | 6 | namespace Microsoft.EntityFrameworkCore.Query;
|
5 | 7 |
|
6 | 8 | public class ComplexTypeQuerySqlServerTest : ComplexTypeQueryRelationalTestBase<
|
@@ -742,6 +744,121 @@ public override async Task Union_two_different_struct_complex_type(bool async)
|
742 | 744 | AssertSql();
|
743 | 745 | }
|
744 | 746 |
|
| 747 | + [ConditionalTheory] |
| 748 | + [MemberData(nameof(IsAsyncData))] |
| 749 | + public virtual Task Filter_on_property_inside_complex_type_with_FromSql(bool async) |
| 750 | + => AssertQuery( |
| 751 | + async, |
| 752 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSqlRaw( |
| 753 | + """ |
| 754 | +SELECT [c].[Id], [c].[Name], [c].[BillingAddress_AddressLine1], [c].[BillingAddress_AddressLine2], [c].[BillingAddress_Tags], [c].[BillingAddress_ZipCode], [c].[BillingAddress_Country_Code], [c].[BillingAddress_Country_FullName], [c].[ShippingAddress_AddressLine1], [c].[ShippingAddress_AddressLine2], [c].[ShippingAddress_Tags], [c].[ShippingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 755 | +FROM [Customer] AS [c] |
| 756 | +WHERE [c].[ShippingAddress_ZipCode] = 7728 |
| 757 | +"""), |
| 758 | + ss => ss.Set<Customer>().Where(c => c.ShippingAddress.ZipCode == 07728)); |
| 759 | + |
| 760 | + [ConditionalTheory] |
| 761 | + [MemberData(nameof(IsAsyncData))] |
| 762 | + public virtual Task Filter_on_property_inside_complex_type_after_subquery_with_FromSql(bool async) |
| 763 | + => AssertQuery( |
| 764 | + async, |
| 765 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSql( |
| 766 | + $""" |
| 767 | + SELECT DISTINCT [t].[Id], [t].[Name], [t].[BillingAddress_AddressLine1], [t].[BillingAddress_AddressLine2], [t].[BillingAddress_Tags], [t].[BillingAddress_ZipCode], [t].[BillingAddress_Country_Code], [t].[BillingAddress_Country_FullName], [t].[ShippingAddress_AddressLine1], [t].[ShippingAddress_AddressLine2], [t].[ShippingAddress_Tags], [t].[ShippingAddress_ZipCode], [t].[ShippingAddress_Country_Code], [t].[ShippingAddress_Country_FullName] |
| 768 | + FROM ( |
| 769 | + SELECT [c].[Id], [c].[Name], [c].[BillingAddress_AddressLine1], [c].[BillingAddress_AddressLine2], [c].[BillingAddress_Tags], [c].[BillingAddress_ZipCode], [c].[BillingAddress_Country_Code], [c].[BillingAddress_Country_FullName], [c].[ShippingAddress_AddressLine1], [c].[ShippingAddress_AddressLine2], [c].[ShippingAddress_Tags], [c].[ShippingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 770 | + FROM [Customer] AS [c] |
| 771 | + ORDER BY [c].[Id] |
| 772 | + OFFSET {1} ROWS |
| 773 | + ) AS [t] |
| 774 | + WHERE [t].[ShippingAddress_ZipCode] = 7728 |
| 775 | + """), |
| 776 | + ss => ss.Set<Customer>() |
| 777 | + .OrderBy(c => c.Id) |
| 778 | + .Skip(1) |
| 779 | + .Distinct() |
| 780 | + .Where(c => c.ShippingAddress.ZipCode == 07728)); |
| 781 | + |
| 782 | + [ConditionalTheory] |
| 783 | + [MemberData(nameof(IsAsyncData))] |
| 784 | + public virtual Task Load_complex_type_after_subquery_on_entity_type_with_FromSql(bool async) |
| 785 | + => AssertQuery( |
| 786 | + async, |
| 787 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSql( |
| 788 | + $""" |
| 789 | + SELECT DISTINCT [t].[Id], [t].[Name], [t].[BillingAddress_AddressLine1], [t].[BillingAddress_AddressLine2], [t].[BillingAddress_Tags], [t].[BillingAddress_ZipCode], [t].[BillingAddress_Country_Code], [t].[BillingAddress_Country_FullName], [t].[ShippingAddress_AddressLine1], [t].[ShippingAddress_AddressLine2], [t].[ShippingAddress_Tags], [t].[ShippingAddress_ZipCode], [t].[ShippingAddress_Country_Code], [t].[ShippingAddress_Country_FullName] |
| 790 | + FROM ( |
| 791 | + SELECT [c].[Id], [c].[Name], [c].[BillingAddress_AddressLine1], [c].[BillingAddress_AddressLine2], [c].[BillingAddress_Tags], [c].[BillingAddress_ZipCode], [c].[BillingAddress_Country_Code], [c].[BillingAddress_Country_FullName], [c].[ShippingAddress_AddressLine1], [c].[ShippingAddress_AddressLine2], [c].[ShippingAddress_Tags], [c].[ShippingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 792 | + FROM [Customer] AS [c] |
| 793 | + ORDER BY [c].[Id] |
| 794 | + OFFSET {1} ROWS |
| 795 | + ) AS [t] |
| 796 | + """), |
| 797 | + ss => ss.Set<Customer>() |
| 798 | + .OrderBy(c => c.Id) |
| 799 | + .Skip(1) |
| 800 | + .Distinct()); |
| 801 | + |
| 802 | + [ConditionalTheory] |
| 803 | + [MemberData(nameof(IsAsyncData))] |
| 804 | + public virtual Task Select_complex_type_with_FromSql(bool async) |
| 805 | + => AssertQuery( |
| 806 | + async, |
| 807 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSqlRaw( |
| 808 | + """ |
| 809 | + SELECT [c].[ShippingAddress_AddressLine1], [c].[ShippingAddress_AddressLine2], [c].[ShippingAddress_Tags], [c].[ShippingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 810 | + FROM [Customer] AS [c] |
| 811 | + """).Select(c => c.ShippingAddress), |
| 812 | + ss => ss.Set<Customer>().Select(c => c.ShippingAddress)); |
| 813 | + |
| 814 | + [ConditionalTheory] |
| 815 | + [MemberData(nameof(IsAsyncData))] |
| 816 | + public virtual Task Select_nested_complex_type_with_FromSql(bool async) |
| 817 | + => AssertQuery( |
| 818 | + async, |
| 819 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSqlRaw( |
| 820 | + """ |
| 821 | + SELECT [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 822 | + FROM [Customer] AS [c] |
| 823 | + """).Select(c => c.ShippingAddress.Country), |
| 824 | + ss => ss.Set<Customer>().Select(c => c.ShippingAddress.Country)); |
| 825 | + |
| 826 | + [ConditionalTheory] |
| 827 | + [MemberData(nameof(IsAsyncData))] |
| 828 | + public virtual Task Select_single_property_on_nested_complex_type_with_FromSql(bool async) |
| 829 | + => AssertQuery( |
| 830 | + async, |
| 831 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSqlRaw( |
| 832 | + """ |
| 833 | + SELECT [c].[ShippingAddress_Country_FullName] |
| 834 | + FROM [Customer] AS [c] |
| 835 | + """).Select(c => c.ShippingAddress.Country.FullName), |
| 836 | + ss => ss.Set<Customer>().Select(c => c.ShippingAddress.Country.FullName)); |
| 837 | + |
| 838 | + [ConditionalTheory] |
| 839 | + [MemberData(nameof(IsAsyncData))] |
| 840 | + public virtual Task Select_complex_type_Where_with_FromSql(bool async) |
| 841 | + => AssertQuery( |
| 842 | + async, |
| 843 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSqlRaw( |
| 844 | + """ |
| 845 | + SELECT [c].[ShippingAddress_AddressLine1], [c].[ShippingAddress_AddressLine2], [c].[ShippingAddress_Tags], [c].[ShippingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 846 | + FROM [Customer] AS [c] |
| 847 | + """).Select(c => c.ShippingAddress).Where(a => a.ZipCode == 07728), |
| 848 | + ss => ss.Set<Customer>().Select(c => c.ShippingAddress).Where(a => a.ZipCode == 07728)); |
| 849 | + |
| 850 | + [ConditionalTheory] |
| 851 | + [MemberData(nameof(IsAsyncData))] |
| 852 | + public virtual Task Select_complex_type_Distinct_with_FromSql(bool async) |
| 853 | + => AssertQuery( |
| 854 | + async, |
| 855 | + ss => ((DbSet<Customer>)ss.Set<Customer>()).FromSqlRaw( |
| 856 | + """ |
| 857 | + SELECT [c].[ShippingAddress_AddressLine1], [c].[ShippingAddress_AddressLine2], [c].[ShippingAddress_Tags], [c].[ShippingAddress_ZipCode], [c].[ShippingAddress_Country_Code], [c].[ShippingAddress_Country_FullName] |
| 858 | + FROM [Customer] AS [c] |
| 859 | + """).Select(c => c.ShippingAddress).Distinct(), |
| 860 | + ss => ss.Set<Customer>().Select(c => c.ShippingAddress).Distinct()); |
| 861 | + |
745 | 862 | [ConditionalFact]
|
746 | 863 | public virtual void Check_all_tests_overridden()
|
747 | 864 | => TestHelpers.AssertAllMethodsOverridden(GetType());
|
|
0 commit comments