You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2603 lines
117 KiB
C#
2603 lines
117 KiB
C#
using Microsoft.EntityFrameworkCore.Query;
|
|
using Microsoft.EntityFrameworkCore.TestUtilities.Xunit;
|
|
using Xunit;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace EntityFramework.Jet.FunctionalTests
|
|
{
|
|
public class GearsOfWarQueryJetTest : GearsOfWarQueryTestBase<GearsOfWarQueryJetFixture>
|
|
{
|
|
public GearsOfWarQueryJetTest(GearsOfWarQueryJetFixture fixture, ITestOutputHelper testOutputHelper)
|
|
: base(fixture)
|
|
{
|
|
fixture.TestSqlLoggerFactory.Clear();
|
|
}
|
|
|
|
|
|
public override void Entity_equality_empty()
|
|
{
|
|
base.Entity_equality_empty();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Nickname] IS NULL AND ([g].[SquadId] = 0))");
|
|
}
|
|
|
|
public override void Include_multiple_one_to_one_and_one_to_many()
|
|
{
|
|
base.Include_multiple_one_to_one_and_one_to_many();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
ORDER BY [t0].[FullName]",
|
|
//
|
|
@"SELECT [t.Gear.Weapons].[Id], [t.Gear.Weapons].[AmmunitionType], [t.Gear.Weapons].[IsAutomatic], [t.Gear.Weapons].[Name], [t.Gear.Weapons].[OwnerFullName], [t.Gear.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [t.Gear.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t2].[FullName]
|
|
FROM [CogTag] AS [t1]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear0].*
|
|
FROM [Gear] AS [t.Gear0]
|
|
WHERE [t.Gear0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON ([t1].[GearNickName] = [t2].[Nickname]) AND ([t1].[GearSquadId] = [t2].[SquadId])
|
|
) AS [t3] ON [t.Gear.Weapons].[OwnerFullName] = [t3].[FullName]
|
|
ORDER BY [t3].[FullName]");
|
|
}
|
|
|
|
public override void Include_multiple_one_to_one_and_one_to_many_self_reference()
|
|
{
|
|
base.Include_multiple_one_to_one_and_one_to_many_self_reference();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
ORDER BY [t0].[FullName]",
|
|
//
|
|
@"SELECT [t.Gear.Weapons].[Id], [t.Gear.Weapons].[AmmunitionType], [t.Gear.Weapons].[IsAutomatic], [t.Gear.Weapons].[Name], [t.Gear.Weapons].[OwnerFullName], [t.Gear.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [t.Gear.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t2].[FullName]
|
|
FROM [CogTag] AS [t1]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear0].*
|
|
FROM [Gear] AS [t.Gear0]
|
|
WHERE [t.Gear0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON ([t1].[GearNickName] = [t2].[Nickname]) AND ([t1].[GearSquadId] = [t2].[SquadId])
|
|
) AS [t3] ON [t.Gear.Weapons].[OwnerFullName] = [t3].[FullName]
|
|
ORDER BY [t3].[FullName]");
|
|
}
|
|
|
|
public override void Include_multiple_one_to_one_and_one_to_one_and_one_to_many()
|
|
{
|
|
base.Include_multiple_one_to_one_and_one_to_one_and_one_to_many();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t.Gear.Squad].[Id], [t.Gear.Squad].[InternalNumber], [t.Gear.Squad].[Name]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
LEFT JOIN [Squad] AS [t.Gear.Squad] ON [t0].[SquadId] = [t.Gear.Squad].[Id]
|
|
ORDER BY [t.Gear.Squad].[Id]",
|
|
//
|
|
@"SELECT [t.Gear.Squad.Members].[Nickname], [t.Gear.Squad.Members].[SquadId], [t.Gear.Squad.Members].[AssignedCityName], [t.Gear.Squad.Members].[CityOrBirthName], [t.Gear.Squad.Members].[Discriminator], [t.Gear.Squad.Members].[FullName], [t.Gear.Squad.Members].[HasSoulPatch], [t.Gear.Squad.Members].[LeaderNickname], [t.Gear.Squad.Members].[LeaderSquadId], [t.Gear.Squad.Members].[Rank]
|
|
FROM [Gear] AS [t.Gear.Squad.Members]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t.Gear.Squad0].[Id]
|
|
FROM [CogTag] AS [t1]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear0].*
|
|
FROM [Gear] AS [t.Gear0]
|
|
WHERE [t.Gear0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON ([t1].[GearNickName] = [t2].[Nickname]) AND ([t1].[GearSquadId] = [t2].[SquadId])
|
|
LEFT JOIN [Squad] AS [t.Gear.Squad0] ON [t2].[SquadId] = [t.Gear.Squad0].[Id]
|
|
) AS [t3] ON [t.Gear.Squad.Members].[SquadId] = [t3].[Id]
|
|
WHERE [t.Gear.Squad.Members].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t3].[Id]");
|
|
}
|
|
|
|
public override void Include_multiple_one_to_one_optional_and_one_to_one_required()
|
|
{
|
|
base.Include_multiple_one_to_one_optional_and_one_to_one_required();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank], [t.Gear.Squad].[Id], [t.Gear.Squad].[InternalNumber], [t.Gear.Squad].[Name]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
LEFT JOIN [Squad] AS [t.Gear.Squad] ON [t0].[SquadId] = [t.Gear.Squad].[Id]");
|
|
}
|
|
|
|
public override void Include_multiple_circular()
|
|
{
|
|
base.Include_multiple_circular();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g.CityOfBirth].[Name]",
|
|
//
|
|
@"SELECT [g.CityOfBirth.StationedGears].[Nickname], [g.CityOfBirth.StationedGears].[SquadId], [g.CityOfBirth.StationedGears].[AssignedCityName], [g.CityOfBirth.StationedGears].[CityOrBirthName], [g.CityOfBirth.StationedGears].[Discriminator], [g.CityOfBirth.StationedGears].[FullName], [g.CityOfBirth.StationedGears].[HasSoulPatch], [g.CityOfBirth.StationedGears].[LeaderNickname], [g.CityOfBirth.StationedGears].[LeaderSquadId], [g.CityOfBirth.StationedGears].[Rank]
|
|
FROM [Gear] AS [g.CityOfBirth.StationedGears]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.CityOfBirth0].[Name]
|
|
FROM [Gear] AS [g0]
|
|
INNER JOIN [City] AS [g.CityOfBirth0] ON [g0].[CityOrBirthName] = [g.CityOfBirth0].[Name]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [g.CityOfBirth.StationedGears].[AssignedCityName] = [t].[Name]
|
|
WHERE [g.CityOfBirth.StationedGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[Name]");
|
|
}
|
|
|
|
public override void Include_multiple_circular_with_filter()
|
|
{
|
|
base.Include_multiple_circular_with_filter();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Nickname] = 'Marcus')
|
|
ORDER BY [g.CityOfBirth].[Name]",
|
|
//
|
|
@"SELECT [g.CityOfBirth.StationedGears].[Nickname], [g.CityOfBirth.StationedGears].[SquadId], [g.CityOfBirth.StationedGears].[AssignedCityName], [g.CityOfBirth.StationedGears].[CityOrBirthName], [g.CityOfBirth.StationedGears].[Discriminator], [g.CityOfBirth.StationedGears].[FullName], [g.CityOfBirth.StationedGears].[HasSoulPatch], [g.CityOfBirth.StationedGears].[LeaderNickname], [g.CityOfBirth.StationedGears].[LeaderSquadId], [g.CityOfBirth.StationedGears].[Rank]
|
|
FROM [Gear] AS [g.CityOfBirth.StationedGears]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.CityOfBirth0].[Name]
|
|
FROM [Gear] AS [g0]
|
|
INNER JOIN [City] AS [g.CityOfBirth0] ON [g0].[CityOrBirthName] = [g.CityOfBirth0].[Name]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear') AND ([g0].[Nickname] = 'Marcus')
|
|
) AS [t] ON [g.CityOfBirth.StationedGears].[AssignedCityName] = [t].[Name]
|
|
WHERE [g.CityOfBirth.StationedGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[Name]");
|
|
}
|
|
|
|
public override void Include_using_alternate_key()
|
|
{
|
|
base.Include_using_alternate_key();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Nickname] = 'Marcus')
|
|
ORDER BY [g].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT [g0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear') AND ([g0].[Nickname] = 'Marcus')
|
|
) AS [t] ON [g.Weapons].[OwnerFullName] = [t].[FullName]
|
|
ORDER BY [t].[FullName]");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Optional_navigation_with_collection_composite_key()
|
|
{
|
|
base.Optional_navigation_with_collection_composite_key();
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Project_collection_navigation_with_inheritance1()
|
|
{
|
|
base.Project_collection_navigation_with_inheritance1();
|
|
}
|
|
|
|
public override void Include_multiple_include_then_include()
|
|
{
|
|
base.Include_multiple_include_then_include();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location], [g.AssignedCity].[Name], [g.AssignedCity].[Location]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
LEFT JOIN [City] AS [g.AssignedCity] ON [g].[AssignedCityName] = [g.AssignedCity].[Name]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g].[Nickname], [g.AssignedCity].[Name], [g.CityOfBirth].[Name]",
|
|
//
|
|
@"SELECT [g.AssignedCity.BornGears].[Nickname], [g.AssignedCity.BornGears].[SquadId], [g.AssignedCity.BornGears].[AssignedCityName], [g.AssignedCity.BornGears].[CityOrBirthName], [g.AssignedCity.BornGears].[Discriminator], [g.AssignedCity.BornGears].[FullName], [g.AssignedCity.BornGears].[HasSoulPatch], [g.AssignedCity.BornGears].[LeaderNickname], [g.AssignedCity.BornGears].[LeaderSquadId], [g.AssignedCity.BornGears].[Rank], [g#Tag].[Id], [g#Tag].[GearNickName], [g#Tag].[GearSquadId], [g#Tag].[Note]
|
|
FROM [Gear] AS [g.AssignedCity.BornGears]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g.AssignedCity.BornGears].[Nickname] = [g#Tag].[GearNickName]) AND ([g.AssignedCity.BornGears].[SquadId] = [g#Tag].[GearSquadId])
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.AssignedCity0].[Name], [g0].[Nickname]
|
|
FROM [Gear] AS [g0]
|
|
INNER JOIN [City] AS [g.CityOfBirth0] ON [g0].[CityOrBirthName] = [g.CityOfBirth0].[Name]
|
|
LEFT JOIN [City] AS [g.AssignedCity0] ON [g0].[AssignedCityName] = [g.AssignedCity0].[Name]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [g.AssignedCity.BornGears].[CityOrBirthName] = [t].[Name]
|
|
WHERE [g.AssignedCity.BornGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[Nickname], [t].[Name]",
|
|
//
|
|
@"SELECT [g.AssignedCity.StationedGears].[Nickname], [g.AssignedCity.StationedGears].[SquadId], [g.AssignedCity.StationedGears].[AssignedCityName], [g.AssignedCity.StationedGears].[CityOrBirthName], [g.AssignedCity.StationedGears].[Discriminator], [g.AssignedCity.StationedGears].[FullName], [g.AssignedCity.StationedGears].[HasSoulPatch], [g.AssignedCity.StationedGears].[LeaderNickname], [g.AssignedCity.StationedGears].[LeaderSquadId], [g.AssignedCity.StationedGears].[Rank], [g.Tag0].[Id], [g.Tag0].[GearNickName], [g.Tag0].[GearSquadId], [g.Tag0].[Note]
|
|
FROM [Gear] AS [g.AssignedCity.StationedGears]
|
|
LEFT JOIN [CogTag] AS [g.Tag0] ON ([g.AssignedCity.StationedGears].[Nickname] = [g.Tag0].[GearNickName]) AND ([g.AssignedCity.StationedGears].[SquadId] = [g.Tag0].[GearSquadId])
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.AssignedCity1].[Name], [g1].[Nickname]
|
|
FROM [Gear] AS [g1]
|
|
INNER JOIN [City] AS [g.CityOfBirth1] ON [g1].[CityOrBirthName] = [g.CityOfBirth1].[Name]
|
|
LEFT JOIN [City] AS [g.AssignedCity1] ON [g1].[AssignedCityName] = [g.AssignedCity1].[Name]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON [g.AssignedCity.StationedGears].[AssignedCityName] = [t0].[Name]
|
|
WHERE [g.AssignedCity.StationedGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t0].[Nickname], [t0].[Name]",
|
|
//
|
|
@"SELECT [g.CityOfBirth.BornGears].[Nickname], [g.CityOfBirth.BornGears].[SquadId], [g.CityOfBirth.BornGears].[AssignedCityName], [g.CityOfBirth.BornGears].[CityOrBirthName], [g.CityOfBirth.BornGears].[Discriminator], [g.CityOfBirth.BornGears].[FullName], [g.CityOfBirth.BornGears].[HasSoulPatch], [g.CityOfBirth.BornGears].[LeaderNickname], [g.CityOfBirth.BornGears].[LeaderSquadId], [g.CityOfBirth.BornGears].[Rank], [g.Tag1].[Id], [g.Tag1].[GearNickName], [g.Tag1].[GearSquadId], [g.Tag1].[Note]
|
|
FROM [Gear] AS [g.CityOfBirth.BornGears]
|
|
LEFT JOIN [CogTag] AS [g.Tag1] ON ([g.CityOfBirth.BornGears].[Nickname] = [g.Tag1].[GearNickName]) AND ([g.CityOfBirth.BornGears].[SquadId] = [g.Tag1].[GearSquadId])
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.CityOfBirth2].[Name], [g2].[Nickname], [g.AssignedCity2].[Name] AS [Name0]
|
|
FROM [Gear] AS [g2]
|
|
INNER JOIN [City] AS [g.CityOfBirth2] ON [g2].[CityOrBirthName] = [g.CityOfBirth2].[Name]
|
|
LEFT JOIN [City] AS [g.AssignedCity2] ON [g2].[AssignedCityName] = [g.AssignedCity2].[Name]
|
|
WHERE [g2].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t1] ON [g.CityOfBirth.BornGears].[CityOrBirthName] = [t1].[Name]
|
|
WHERE [g.CityOfBirth.BornGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t1].[Nickname], [t1].[Name0], [t1].[Name]",
|
|
//
|
|
@"SELECT [g.CityOfBirth.StationedGears].[Nickname], [g.CityOfBirth.StationedGears].[SquadId], [g.CityOfBirth.StationedGears].[AssignedCityName], [g.CityOfBirth.StationedGears].[CityOrBirthName], [g.CityOfBirth.StationedGears].[Discriminator], [g.CityOfBirth.StationedGears].[FullName], [g.CityOfBirth.StationedGears].[HasSoulPatch], [g.CityOfBirth.StationedGears].[LeaderNickname], [g.CityOfBirth.StationedGears].[LeaderSquadId], [g.CityOfBirth.StationedGears].[Rank], [g.Tag2].[Id], [g.Tag2].[GearNickName], [g.Tag2].[GearSquadId], [g.Tag2].[Note]
|
|
FROM [Gear] AS [g.CityOfBirth.StationedGears]
|
|
LEFT JOIN [CogTag] AS [g.Tag2] ON ([g.CityOfBirth.StationedGears].[Nickname] = [g.Tag2].[GearNickName]) AND ([g.CityOfBirth.StationedGears].[SquadId] = [g.Tag2].[GearSquadId])
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.CityOfBirth3].[Name], [g3].[Nickname], [g.AssignedCity3].[Name] AS [Name0]
|
|
FROM [Gear] AS [g3]
|
|
INNER JOIN [City] AS [g.CityOfBirth3] ON [g3].[CityOrBirthName] = [g.CityOfBirth3].[Name]
|
|
LEFT JOIN [City] AS [g.AssignedCity3] ON [g3].[AssignedCityName] = [g.AssignedCity3].[Name]
|
|
WHERE [g3].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON [g.CityOfBirth.StationedGears].[AssignedCityName] = [t2].[Name]
|
|
WHERE [g.CityOfBirth.StationedGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t2].[Nickname], [t2].[Name0], [t2].[Name]");
|
|
}
|
|
|
|
public override void Include_navigation_on_derived_type()
|
|
{
|
|
base.Include_navigation_on_derived_type();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] = 'Officer'
|
|
ORDER BY [g].[Nickname], [g].[SquadId]",
|
|
//
|
|
@"SELECT [o.Reports].[Nickname], [o.Reports].[SquadId], [o.Reports].[AssignedCityName], [o.Reports].[CityOrBirthName], [o.Reports].[Discriminator], [o.Reports].[FullName], [o.Reports].[HasSoulPatch], [o.Reports].[LeaderNickname], [o.Reports].[LeaderSquadId], [o.Reports].[Rank]
|
|
FROM [Gear] AS [o.Reports]
|
|
INNER JOIN (
|
|
SELECT [g0].[Nickname], [g0].[SquadId]
|
|
FROM [Gear] AS [g0]
|
|
WHERE [g0].[Discriminator] = 'Officer'
|
|
) AS [t] ON ([o.Reports].[LeaderNickname] = [t].[Nickname]) AND ([o.Reports].[LeaderSquadId] = [t].[SquadId])
|
|
WHERE [o.Reports].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[Nickname], [t].[SquadId]");
|
|
}
|
|
|
|
public override void String_based_Include_navigation_on_derived_type()
|
|
{
|
|
base.String_based_Include_navigation_on_derived_type();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] = 'Officer'
|
|
ORDER BY [g].[Nickname], [g].[SquadId]",
|
|
//
|
|
@"SELECT [o.Reports].[Nickname], [o.Reports].[SquadId], [o.Reports].[AssignedCityName], [o.Reports].[CityOrBirthName], [o.Reports].[Discriminator], [o.Reports].[FullName], [o.Reports].[HasSoulPatch], [o.Reports].[LeaderNickname], [o.Reports].[LeaderSquadId], [o.Reports].[Rank]
|
|
FROM [Gear] AS [o.Reports]
|
|
INNER JOIN (
|
|
SELECT [g0].[Nickname], [g0].[SquadId]
|
|
FROM [Gear] AS [g0]
|
|
WHERE [g0].[Discriminator] = 'Officer'
|
|
) AS [t] ON ([o.Reports].[LeaderNickname] = [t].[Nickname]) AND ([o.Reports].[LeaderSquadId] = [t].[SquadId])
|
|
WHERE [o.Reports].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[Nickname], [t].[SquadId]");
|
|
}
|
|
|
|
public override void Select_Where_Navigation_Included()
|
|
{
|
|
base.Select_Where_Navigation_Included();
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[Id], [o].[GearNickName], [o].[GearSquadId], [o].[Note], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [CogTag] AS [o]
|
|
LEFT JOIN (
|
|
SELECT [o.Gear].*
|
|
FROM [Gear] AS [o.Gear]
|
|
WHERE [o.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([o].[GearNickName] = [t].[Nickname]) AND ([o].[GearSquadId] = [t].[SquadId])
|
|
WHERE [t].[Nickname] = 'Marcus'");
|
|
}
|
|
|
|
public override void Include_with_join_reference1()
|
|
{
|
|
base.Include_with_join_reference1();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nickname] = [t].[GearNickName])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
public override void Include_with_join_reference2()
|
|
{
|
|
base.Include_with_join_reference2();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location]
|
|
FROM [CogTag] AS [t]
|
|
INNER JOIN [Gear] AS [g] ON ([t].[GearSquadId] = [g].[SquadId]) AND ([t].[GearNickName] = [g].[Nickname])
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
public override void Include_with_join_collection1()
|
|
{
|
|
base.Include_with_join_collection1();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nickname] = [t].[GearNickName])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
INNER JOIN [CogTag] AS [t0] ON ([g0].[SquadId] = [t0].[GearSquadId]) AND ([g0].[Nickname] = [t0].[GearNickName])
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t1] ON [g.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
public override void Include_with_join_collection2()
|
|
{
|
|
base.Include_with_join_collection2();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [CogTag] AS [t]
|
|
INNER JOIN [Gear] AS [g] ON ([t].[GearSquadId] = [g].[SquadId]) AND ([t].[GearNickName] = [g].[Nickname])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g0].[FullName]
|
|
FROM [CogTag] AS [t0]
|
|
INNER JOIN [Gear] AS [g0] ON ([t0].[GearSquadId] = [g0].[SquadId]) AND ([t0].[GearNickName] = [g0].[Nickname])
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t1] ON [g.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Include_where_list_contains_navigation()
|
|
{
|
|
base.Include_where_list_contains_navigation();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id]
|
|
FROM [CogTag] AS [t]");
|
|
|
|
Assert.Contains(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g#Tag].[Id], [g#Tag].[GearNickName], [g#Tag].[GearSquadId], [g#Tag].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g#Tag].[Id] IS NOT NULL AND [g#Tag].[Id] IN (",
|
|
Fixture.TestSqlLoggerFactory.SqlStatements[1]);
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Include_where_list_contains_navigation2()
|
|
{
|
|
base.Include_where_list_contains_navigation2();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id]
|
|
FROM [CogTag] AS [t]");
|
|
|
|
Assert.Contains(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g#Tag].[Id], [g#Tag].[GearNickName], [g#Tag].[GearSquadId], [g#Tag].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g.CityOfBirth].[Location] IS NOT NULL AND [g#Tag].[Id] IN (",
|
|
Fixture.TestSqlLoggerFactory.SqlStatements[1]);
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Navigation_accessed_twice_outside_and_inside_subquery()
|
|
{
|
|
base.Navigation_accessed_twice_outside_and_inside_subquery();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id]
|
|
FROM [CogTag] AS [t]");
|
|
|
|
Assert.Contains(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g#Tag].[Id] IS NOT NULL AND [g#Tag].[Id] IN (",
|
|
Fixture.TestSqlLoggerFactory.SqlStatements[1]);
|
|
}
|
|
|
|
public override void Include_with_join_multi_level()
|
|
{
|
|
base.Include_with_join_multi_level();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nickname] = [t].[GearNickName])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g.CityOfBirth].[Name]",
|
|
//
|
|
@"SELECT [g.CityOfBirth.StationedGears].[Nickname], [g.CityOfBirth.StationedGears].[SquadId], [g.CityOfBirth.StationedGears].[AssignedCityName], [g.CityOfBirth.StationedGears].[CityOrBirthName], [g.CityOfBirth.StationedGears].[Discriminator], [g.CityOfBirth.StationedGears].[FullName], [g.CityOfBirth.StationedGears].[HasSoulPatch], [g.CityOfBirth.StationedGears].[LeaderNickname], [g.CityOfBirth.StationedGears].[LeaderSquadId], [g.CityOfBirth.StationedGears].[Rank]
|
|
FROM [Gear] AS [g.CityOfBirth.StationedGears]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g.CityOfBirth0].[Name]
|
|
FROM [Gear] AS [g0]
|
|
INNER JOIN [City] AS [g.CityOfBirth0] ON [g0].[CityOrBirthName] = [g.CityOfBirth0].[Name]
|
|
INNER JOIN [CogTag] AS [t0] ON ([g0].[SquadId] = [t0].[GearSquadId]) AND ([g0].[Nickname] = [t0].[GearNickName])
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t1] ON [g.CityOfBirth.StationedGears].[AssignedCityName] = [t1].[Name]
|
|
WHERE [g.CityOfBirth.StationedGears].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t1].[Name]");
|
|
}
|
|
|
|
public override void Include_with_join_and_inheritance1()
|
|
{
|
|
base.Include_with_join_and_inheritance1();
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOrBirthName], [o].[Discriminator], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], [o.CityOfBirth].[Name], [o.CityOfBirth].[Location]
|
|
FROM [CogTag] AS [t]
|
|
INNER JOIN [Gear] AS [o] ON ([t].[GearSquadId] = [o].[SquadId]) AND ([t].[GearNickName] = [o].[Nickname])
|
|
INNER JOIN [City] AS [o.CityOfBirth] ON [o].[CityOrBirthName] = [o.CityOfBirth].[Name]
|
|
WHERE [o].[Discriminator] = 'Officer'");
|
|
}
|
|
|
|
public override void Include_with_join_and_inheritance2()
|
|
{
|
|
base.Include_with_join_and_inheritance2();
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOrBirthName], [o].[Discriminator], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank]
|
|
FROM [Gear] AS [o]
|
|
INNER JOIN [CogTag] AS [t] ON ([o].[SquadId] = [t].[GearSquadId]) AND ([o].[Nickname] = [t].[GearNickName])
|
|
WHERE [o].[Discriminator] = 'Officer'
|
|
ORDER BY [o].[FullName]",
|
|
//
|
|
@"SELECT [o.Weapons].[Id], [o.Weapons].[AmmunitionType], [o.Weapons].[IsAutomatic], [o.Weapons].[Name], [o.Weapons].[OwnerFullName], [o.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [o.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [o0].[FullName]
|
|
FROM [Gear] AS [o0]
|
|
INNER JOIN [CogTag] AS [t0] ON ([o0].[SquadId] = [t0].[GearSquadId]) AND ([o0].[Nickname] = [t0].[GearNickName])
|
|
WHERE [o0].[Discriminator] = 'Officer'
|
|
) AS [t1] ON [o.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
public override void Include_with_join_and_inheritance3()
|
|
{
|
|
base.Include_with_join_and_inheritance3();
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOrBirthName], [o].[Discriminator], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank]
|
|
FROM [CogTag] AS [t]
|
|
INNER JOIN [Gear] AS [o] ON ([t].[GearSquadId] = [o].[SquadId]) AND ([t].[GearNickName] = [o].[Nickname])
|
|
WHERE [o].[Discriminator] = 'Officer'
|
|
ORDER BY [o].[Nickname], [o].[SquadId]",
|
|
//
|
|
@"SELECT [o.Reports].[Nickname], [o.Reports].[SquadId], [o.Reports].[AssignedCityName], [o.Reports].[CityOrBirthName], [o.Reports].[Discriminator], [o.Reports].[FullName], [o.Reports].[HasSoulPatch], [o.Reports].[LeaderNickname], [o.Reports].[LeaderSquadId], [o.Reports].[Rank]
|
|
FROM [Gear] AS [o.Reports]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [o0].[Nickname], [o0].[SquadId]
|
|
FROM [CogTag] AS [t0]
|
|
INNER JOIN [Gear] AS [o0] ON ([t0].[GearSquadId] = [o0].[SquadId]) AND ([t0].[GearNickName] = [o0].[Nickname])
|
|
WHERE [o0].[Discriminator] = 'Officer'
|
|
) AS [t1] ON ([o.Reports].[LeaderNickname] = [t1].[Nickname]) AND ([o.Reports].[LeaderSquadId] = [t1].[SquadId])
|
|
WHERE [o.Reports].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t1].[Nickname], [t1].[SquadId]");
|
|
}
|
|
|
|
public override void Include_with_nested_navigation_in_order_by()
|
|
{
|
|
base.Include_with_nested_navigation_in_order_by();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [Weapon] AS [w]
|
|
LEFT JOIN (
|
|
SELECT [w.Owner].*
|
|
FROM [Gear] AS [w.Owner]
|
|
WHERE [w.Owner].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [w].[OwnerFullName] = [t].[FullName]
|
|
LEFT JOIN [City] AS [w.Owner.CityOfBirth] ON [t].[CityOrBirthName] = [w.Owner.CityOfBirth].[Name]
|
|
ORDER BY [w.Owner.CityOfBirth].[Name]");
|
|
}
|
|
|
|
public override void Where_enum()
|
|
{
|
|
base.Where_enum();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[Rank] = 2)");
|
|
}
|
|
|
|
public override void Where_nullable_enum_with_constant()
|
|
{
|
|
base.Where_nullable_enum_with_constant();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[AmmunitionType] = 1");
|
|
}
|
|
|
|
public override void Where_nullable_enum_with_null_constant()
|
|
{
|
|
base.Where_nullable_enum_with_null_constant();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[AmmunitionType] IS NULL");
|
|
}
|
|
|
|
public override void Where_nullable_enum_with_non_nullable_parameter()
|
|
{
|
|
base.Where_nullable_enum_with_non_nullable_parameter();
|
|
|
|
AssertSql(
|
|
@"@__ammunitionType_0='Cartridge'
|
|
|
|
SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[AmmunitionType] = @__ammunitionType_0");
|
|
}
|
|
|
|
|
|
[ConditionalFact]
|
|
public override void Where_bitwise_and_enum()
|
|
{
|
|
base.Where_bitwise_and_enum();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) > 0)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)");
|
|
}
|
|
|
|
[ConditionalFact]
|
|
public override void Where_bitwise_and_integral()
|
|
{
|
|
base.Where_bitwise_and_integral();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)");
|
|
}
|
|
|
|
[ConditionalFact]
|
|
public override void Where_bitwise_and_nullable_enum_with_constant()
|
|
{
|
|
base.Where_bitwise_and_nullable_enum_with_constant();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE ([w].[AmmunitionType] BAND 1) > 0");
|
|
}
|
|
|
|
[ConditionalFact]
|
|
public override void Where_bitwise_and_nullable_enum_with_null_constant()
|
|
{
|
|
base.Where_bitwise_and_nullable_enum_with_null_constant();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE ([w].[AmmunitionType] BAND NULL) > 0");
|
|
}
|
|
|
|
[ConditionalFact]
|
|
public override void Where_bitwise_and_nullable_enum_with_non_nullable_parameter()
|
|
{
|
|
base.Where_bitwise_and_nullable_enum_with_non_nullable_parameter();
|
|
|
|
AssertSql(
|
|
@"@__ammunitionType_0='Cartridge'
|
|
|
|
SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE ([w].[AmmunitionType] BAND @__ammunitionType_0) > 0");
|
|
}
|
|
|
|
[ConditionalFact]
|
|
public override void Where_bitwise_and_nullable_enum_with_nullable_parameter()
|
|
{
|
|
base.Where_bitwise_and_nullable_enum_with_nullable_parameter();
|
|
|
|
AssertSql(
|
|
@"@__ammunitionType_0='Cartridge'
|
|
|
|
SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE ([w].[AmmunitionType] BAND @__ammunitionType_0) > 0",
|
|
//
|
|
@"@__ammunitionType_0='' (Nullable = false) (DbType = String)
|
|
|
|
SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE ([w].[AmmunitionType] BAND @__ammunitionType_0) > 0");
|
|
}
|
|
|
|
|
|
[Fact(Skip = "Unsupported by JET: test model not suitable for JET foreign keys")]
|
|
public override void Where_bitwise_or_enum()
|
|
{
|
|
base.Where_bitwise_or_enum();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] | 1) > 0)");
|
|
}
|
|
|
|
|
|
public override void Where_enum_has_flag()
|
|
{
|
|
base.Where_enum_has_flag();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 5) = 5)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ((1 BAND [g].[Rank]) = [g].[Rank])");
|
|
}
|
|
|
|
public override void Where_enum_has_flag_subquery()
|
|
{
|
|
base.Where_enum_has_flag_subquery();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND (
|
|
SELECT TOP 1 [x].[Rank]
|
|
FROM [Gear] AS [x]
|
|
WHERE [x].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x].[Nickname], [x].[SquadId]
|
|
)) = (
|
|
SELECT TOP 1 [x].[Rank]
|
|
FROM [Gear] AS [x]
|
|
WHERE [x].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x].[Nickname], [x].[SquadId]
|
|
))",
|
|
//
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ((1 BAND (
|
|
SELECT TOP 1 [x].[Rank]
|
|
FROM [Gear] AS [x]
|
|
WHERE [x].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x].[Nickname], [x].[SquadId]
|
|
)) = (
|
|
SELECT TOP 1 [x].[Rank]
|
|
FROM [Gear] AS [x]
|
|
WHERE [x].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x].[Nickname], [x].[SquadId]
|
|
))");
|
|
}
|
|
|
|
public override void Where_enum_has_flag_subquery_client_eval()
|
|
{
|
|
base.Where_enum_has_flag_subquery_client_eval();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')",
|
|
//
|
|
@"SELECT TOP 1 [x0].[Rank]
|
|
FROM [Gear] AS [x0]
|
|
WHERE [x0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x0].[Nickname], [x0].[SquadId]",
|
|
//
|
|
@"SELECT TOP 1 [x0].[Rank]
|
|
FROM [Gear] AS [x0]
|
|
WHERE [x0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x0].[Nickname], [x0].[SquadId]",
|
|
//
|
|
@"SELECT TOP 1 [x0].[Rank]
|
|
FROM [Gear] AS [x0]
|
|
WHERE [x0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x0].[Nickname], [x0].[SquadId]",
|
|
//
|
|
@"SELECT TOP 1 [x0].[Rank]
|
|
FROM [Gear] AS [x0]
|
|
WHERE [x0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x0].[Nickname], [x0].[SquadId]",
|
|
//
|
|
@"SELECT TOP 1 [x0].[Rank]
|
|
FROM [Gear] AS [x0]
|
|
WHERE [x0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [x0].[Nickname], [x0].[SquadId]");
|
|
}
|
|
|
|
public override void Where_enum_has_flag_with_non_nullable_parameter()
|
|
{
|
|
base.Where_enum_has_flag_with_non_nullable_parameter();
|
|
|
|
AssertSql(
|
|
@"@__parameter_0='Corporal'
|
|
|
|
SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND @__parameter_0) = @__parameter_0)");
|
|
}
|
|
|
|
|
|
public override void Select_enum_has_flag()
|
|
{
|
|
base.Select_enum_has_flag();
|
|
|
|
AssertSql(
|
|
@"SELECT TOP 1 CASE
|
|
WHEN ([g].[Rank] BAND 1) = 1
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END AS [hasFlagTrue], CASE
|
|
WHEN ([g].[Rank] BAND 2) = 2
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END AS [hasFlagFalse]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Rank] BAND 1) = 1)");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET")]
|
|
public override void Where_count_subquery_without_collision()
|
|
{
|
|
base.Where_count_subquery_without_collision();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Nickname], [w].[SquadId], [w].[AssignedCityName], [w].[CityOrBirthName], [w].[Discriminator], [w].[FullName], [w].[HasSoulPatch], [w].[LeaderNickname], [w].[LeaderSquadId], [w].[Rank]
|
|
FROM [Gear] AS [w]
|
|
WHERE [w].[Discriminator] IN ('Officer', 'Gear') AND (2 IN (
|
|
SELECT COUNT(*)
|
|
FROM [Weapon] AS [w0]
|
|
WHERE [w].[FullName] = [w0].[OwnerFullName]
|
|
))");
|
|
}
|
|
|
|
public override void Where_any_subquery_without_collision()
|
|
{
|
|
base.Where_any_subquery_without_collision();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Nickname], [w].[SquadId], [w].[AssignedCityName], [w].[CityOrBirthName], [w].[Discriminator], [w].[FullName], [w].[HasSoulPatch], [w].[LeaderNickname], [w].[LeaderSquadId], [w].[Rank]
|
|
FROM [Gear] AS [w]
|
|
WHERE [w].[Discriminator] IN ('Officer', 'Gear') AND EXISTS (
|
|
SELECT 1
|
|
FROM [Weapon] AS [w0]
|
|
WHERE [w].[FullName] = [w0].[OwnerFullName])");
|
|
}
|
|
|
|
public override void Select_inverted_boolean()
|
|
{
|
|
base.Select_inverted_boolean();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN [w].[IsAutomatic] = 0
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END AS [Manual]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[IsAutomatic] = 1");
|
|
}
|
|
|
|
public override void Select_comparison_with_null()
|
|
{
|
|
base.Select_comparison_with_null();
|
|
|
|
AssertSql(
|
|
@"@__ammunitionType_1='Cartridge' (Nullable = true)
|
|
@__ammunitionType_0='Cartridge' (Nullable = true)
|
|
|
|
SELECT [w].[Id], CASE
|
|
WHEN [w].[AmmunitionType] = @__ammunitionType_1
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END AS [Cartidge]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[AmmunitionType] = @__ammunitionType_0",
|
|
//
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN [w].[AmmunitionType] IS NULL
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END AS [Cartidge]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[AmmunitionType] IS NULL");
|
|
}
|
|
|
|
public override void Select_ternary_operation_with_boolean()
|
|
{
|
|
base.Select_ternary_operation_with_boolean();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN [w].[IsAutomatic] = 1
|
|
THEN 1 ELSE 0
|
|
END AS [Num]
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Select_ternary_operation_with_inverted_boolean()
|
|
{
|
|
base.Select_ternary_operation_with_inverted_boolean();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN [w].[IsAutomatic] = 0
|
|
THEN 1 ELSE 0
|
|
END AS [Num]
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Select_ternary_operation_with_has_value_not_null()
|
|
{
|
|
base.Select_ternary_operation_with_has_value_not_null();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN [w].[AmmunitionType] IS NOT NULL AND ([w].[AmmunitionType] = 1)
|
|
THEN 'Yes' ELSE 'No'
|
|
END AS [IsCartidge]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [w].[AmmunitionType] IS NOT NULL AND ([w].[AmmunitionType] = 1)");
|
|
}
|
|
|
|
public override void Select_ternary_operation_multiple_conditions()
|
|
{
|
|
base.Select_ternary_operation_multiple_conditions();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN ([w].[AmmunitionType] = 2) AND ([w].[SynergyWithId] = 1)
|
|
THEN 'Yes' ELSE 'No'
|
|
END AS [IsCartidge]
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Select_ternary_operation_multiple_conditions_2()
|
|
{
|
|
base.Select_ternary_operation_multiple_conditions_2();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN ([w].[IsAutomatic] = 0) AND ([w].[SynergyWithId] = 1)
|
|
THEN 'Yes' ELSE 'No'
|
|
END AS [IsCartidge]
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Select_multiple_conditions()
|
|
{
|
|
base.Select_multiple_conditions();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN ([w].[IsAutomatic] = 0) AND ([w].[SynergyWithId] = 1)
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END AS [IsCartidge]
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Select_nested_ternary_operations()
|
|
{
|
|
base.Select_nested_ternary_operations();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], CASE
|
|
WHEN [w].[IsAutomatic] = 0
|
|
THEN CASE
|
|
WHEN [w].[AmmunitionType] = 1
|
|
THEN 'ManualCartridge' ELSE 'Manual'
|
|
END ELSE 'Auto'
|
|
END AS [IsManualCartidge]
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Null_propagation_optimization1()
|
|
{
|
|
base.Null_propagation_optimization1();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[LeaderNickname] = 'Marcus')");
|
|
}
|
|
|
|
|
|
|
|
public override void Select_null_propagation_negative1()
|
|
{
|
|
base.Select_null_propagation_negative1();
|
|
|
|
AssertSql(
|
|
@"SELECT CASE
|
|
WHEN [g].[LeaderNickname] IS NOT NULL
|
|
THEN CASE
|
|
WHEN LEN([g].[Nickname]) = 5
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END ELSE NULL
|
|
END
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
public override void Select_null_propagation_negative2()
|
|
{
|
|
base.Select_null_propagation_negative2();
|
|
|
|
AssertSql(
|
|
@"SELECT CASE
|
|
WHEN [g1].[LeaderNickname] IS NOT NULL
|
|
THEN [g2].[LeaderNickname] ELSE NULL
|
|
END
|
|
FROM [Gear] AS [g1]
|
|
, [Gear] AS [g2]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Select_null_propagation_negative3()
|
|
{
|
|
base.Select_null_propagation_negative3();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Select_null_propagation_negative4()
|
|
{
|
|
base.Select_null_propagation_negative4();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Select_null_propagation_negative5()
|
|
{
|
|
base.Select_null_propagation_negative5();
|
|
}
|
|
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Select_Where_Navigation_Scalar_Equals_Navigation_Scalar()
|
|
{
|
|
base.Select_Where_Navigation_Scalar_Equals_Navigation_Scalar();
|
|
|
|
AssertSql(
|
|
@"SELECT [ct1].[Id], [ct1].[GearNickName], [ct1].[GearSquadId], [ct1].[Note], [ct2].[Id], [ct2].[GearNickName], [ct2].[GearSquadId], [ct2].[Note]
|
|
FROM [CogTag] AS [ct1]
|
|
LEFT JOIN (
|
|
SELECT [ct1.Gear].*
|
|
FROM [Gear] AS [ct1.Gear]
|
|
WHERE [ct1.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([ct1].[GearNickName] = [t].[Nickname]) AND ([ct1].[GearSquadId] = [t].[SquadId])
|
|
, [CogTag] AS [ct2]
|
|
LEFT JOIN (
|
|
SELECT [ct2.Gear].*
|
|
FROM [Gear] AS [ct2.Gear]
|
|
WHERE [ct2.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([ct2].[GearNickName] = [t0].[Nickname]) AND ([ct2].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Nickname] = [t0].[Nickname]) OR ([t].[Nickname] IS NULL AND [t0].[Nickname] IS NULL)");
|
|
}
|
|
|
|
public override void Select_Singleton_Navigation_With_Member_Access()
|
|
{
|
|
base.Select_Singleton_Navigation_With_Member_Access();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName] AS [B], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [CogTag] AS [ct]
|
|
LEFT JOIN (
|
|
SELECT [ct.Gear].*
|
|
FROM [Gear] AS [ct.Gear]
|
|
WHERE [ct.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([ct].[GearNickName] = [t].[Nickname]) AND ([ct].[GearSquadId] = [t].[SquadId])
|
|
WHERE ([t].[Nickname] = 'Marcus') AND (([t].[CityOrBirthName] <> 'Ephyra') OR [t].[CityOrBirthName] IS NULL)");
|
|
}
|
|
|
|
public override void Select_Where_Navigation()
|
|
{
|
|
base.Select_Where_Navigation();
|
|
|
|
AssertSql(
|
|
@"SELECT [ct].[Id], [ct].[GearNickName], [ct].[GearSquadId], [ct].[Note]
|
|
FROM [CogTag] AS [ct]
|
|
LEFT JOIN (
|
|
SELECT [ct.Gear].*
|
|
FROM [Gear] AS [ct.Gear]
|
|
WHERE [ct.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([ct].[GearNickName] = [t].[Nickname]) AND ([ct].[GearSquadId] = [t].[SquadId])
|
|
WHERE [t].[Nickname] = 'Marcus'");
|
|
}
|
|
|
|
public override void Select_Where_Navigation_Client()
|
|
{
|
|
base.Select_Where_Navigation_Client();
|
|
|
|
AssertSql(
|
|
@"SELECT [o].[Id], [o].[GearNickName], [o].[GearSquadId], [o].[Note], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [CogTag] AS [o]
|
|
LEFT JOIN (
|
|
SELECT [o.Gear].*
|
|
FROM [Gear] AS [o.Gear]
|
|
WHERE [o.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([o].[GearNickName] = [t].[Nickname]) AND ([o].[GearSquadId] = [t].[SquadId])
|
|
WHERE [o].[GearNickName] IS NOT NULL OR [o].[GearSquadId] IS NOT NULL");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Select_Where_Navigation_Equals_Navigation()
|
|
{
|
|
base.Select_Where_Navigation_Equals_Navigation();
|
|
|
|
AssertSql(
|
|
@"SELECT [ct1].[Id], [ct1].[GearNickName], [ct1].[GearSquadId], [ct1].[Note], [ct2].[Id], [ct2].[GearNickName], [ct2].[GearSquadId], [ct2].[Note]
|
|
FROM [CogTag] AS [ct1]
|
|
LEFT JOIN (
|
|
SELECT [ct1.Gear].*
|
|
FROM [Gear] AS [ct1.Gear]
|
|
WHERE [ct1.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([ct1].[GearNickName] = [t].[Nickname]) AND ([ct1].[GearSquadId] = [t].[SquadId])
|
|
, [CogTag] AS [ct2]
|
|
LEFT JOIN (
|
|
SELECT [ct2.Gear].*
|
|
FROM [Gear] AS [ct2.Gear]
|
|
WHERE [ct2.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([ct2].[GearNickName] = [t0].[Nickname]) AND ([ct2].[GearSquadId] = [t0].[SquadId])
|
|
WHERE (([t].[Nickname] = [t0].[Nickname]) OR ([t].[Nickname] IS NULL AND [t0].[Nickname] IS NULL)) AND (([t].[SquadId] = [t0].[SquadId]) OR ([t].[SquadId] IS NULL AND [t0].[SquadId] IS NULL))");
|
|
}
|
|
|
|
public override void Select_Where_Navigation_Null()
|
|
{
|
|
base.Select_Where_Navigation_Null();
|
|
|
|
AssertSql(
|
|
@"SELECT [ct].[Id], [ct].[GearNickName], [ct].[GearSquadId], [ct].[Note]
|
|
FROM [CogTag] AS [ct]
|
|
WHERE [ct].[GearNickName] IS NULL AND [ct].[GearSquadId] IS NULL");
|
|
}
|
|
|
|
public override void Select_Where_Navigation_Null_Reverse()
|
|
{
|
|
base.Select_Where_Navigation_Null_Reverse();
|
|
|
|
AssertSql(
|
|
@"SELECT [ct].[Id], [ct].[GearNickName], [ct].[GearSquadId], [ct].[Note]
|
|
FROM [CogTag] AS [ct]
|
|
WHERE [ct].[GearNickName] IS NULL AND [ct].[GearSquadId] IS NULL");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Select_Where_Navigation_Scalar_Equals_Navigation_Scalar_Projected()
|
|
{
|
|
base.Select_Where_Navigation_Scalar_Equals_Navigation_Scalar_Projected();
|
|
|
|
AssertSql(
|
|
@"SELECT [ct1].[Id] AS [Id1], [ct2].[Id] AS [Id2]
|
|
FROM [CogTag] AS [ct1]
|
|
LEFT JOIN (
|
|
SELECT [ct1.Gear].*
|
|
FROM [Gear] AS [ct1.Gear]
|
|
WHERE [ct1.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([ct1].[GearNickName] = [t].[Nickname]) AND ([ct1].[GearSquadId] = [t].[SquadId])
|
|
, [CogTag] AS [ct2]
|
|
LEFT JOIN (
|
|
SELECT [ct2.Gear].*
|
|
FROM [Gear] AS [ct2.Gear]
|
|
WHERE [ct2.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([ct2].[GearNickName] = [t0].[Nickname]) AND ([ct2].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Nickname] = [t0].[Nickname]) OR ([t].[Nickname] IS NULL AND [t0].[Nickname] IS NULL)");
|
|
}
|
|
|
|
public override void Optional_Navigation_Null_Coalesce_To_Clr_Type()
|
|
{
|
|
base.Optional_Navigation_Null_Coalesce_To_Clr_Type();
|
|
|
|
AssertSql(
|
|
@"SELECT TOP 1 CAST(COALESCE([w.SynergyWith].[IsAutomatic], 0) AS bit) AS [IsAutomatic]
|
|
FROM [Weapon] AS [w]
|
|
LEFT JOIN [Weapon] AS [w.SynergyWith] ON [w].[SynergyWithId] = [w.SynergyWith].[Id]");
|
|
}
|
|
|
|
public override void Where_subquery_boolean()
|
|
{
|
|
base.Where_subquery_boolean();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ((
|
|
SELECT TOP 1 [w].[IsAutomatic]
|
|
FROM [Weapon] AS [w]
|
|
WHERE [g].[FullName] = [w].[OwnerFullName]
|
|
) = True)");
|
|
}
|
|
|
|
public override void Singleton_Navigation_With_Member_Access()
|
|
{
|
|
base.Singleton_Navigation_With_Member_Access();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[CityOrBirthName] AS [B]
|
|
FROM [CogTag] AS [ct]
|
|
LEFT JOIN (
|
|
SELECT [ct.Gear].*
|
|
FROM [Gear] AS [ct.Gear]
|
|
WHERE [ct.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON ([ct].[GearNickName] = [t].[Nickname]) AND ([ct].[GearSquadId] = [t].[SquadId])
|
|
WHERE ([t].[Nickname] = 'Marcus') AND (([t].[CityOrBirthName] <> 'Ephyra') OR [t].[CityOrBirthName] IS NULL)");
|
|
}
|
|
|
|
public override void GroupJoin_Composite_Key()
|
|
{
|
|
base.GroupJoin_Composite_Key();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [CogTag] AS [ct]
|
|
INNER JOIN [Gear] AS [g] ON ([ct].[GearNickName] = [g].[Nickname]) AND ([ct].[GearSquadId] = [g].[SquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: subqueries supported only in FROM clause")]public override void Join_navigation_translated_to_subquery_composite_key()
|
|
{
|
|
base.Join_navigation_translated_to_subquery_composite_key();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName], [t].[Note]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [CogTag] AS [t] ON [g].[FullName] IN (
|
|
SELECT TOP 1 [subQuery0].[FullName]
|
|
FROM [Gear] AS [subQuery0]
|
|
WHERE [subQuery0].[Discriminator] IN ('Officer', 'Gear') AND (([subQuery0].[Nickname] = [t].[GearNickName]) AND ([subQuery0].[SquadId] = [t].[GearSquadId]))
|
|
)
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
public override void Collection_with_inheritance_and_join_include_joined()
|
|
{
|
|
base.Collection_with_inheritance_and_join_include_joined();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g#Tag].[Id], [g#Tag].[GearNickName], [g#Tag].[GearSquadId], [g#Tag].[Note]
|
|
FROM [CogTag] AS [t]
|
|
INNER JOIN [Gear] AS [g] ON ([t].[GearSquadId] = [g].[SquadId]) AND ([t].[GearNickName] = [g].[Nickname])
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] = 'Officer'");
|
|
}
|
|
|
|
public override void Collection_with_inheritance_and_join_include_source()
|
|
{
|
|
base.Collection_with_inheritance_and_join_include_source();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g#Tag].[Id], [g#Tag].[GearNickName], [g#Tag].[GearSquadId], [g#Tag].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
INNER JOIN [CogTag] AS [t] ON ([g].[SquadId] = [t].[GearSquadId]) AND ([g].[Nickname] = [t].[GearNickName])
|
|
WHERE [g].[Discriminator] = 'Officer'");
|
|
}
|
|
|
|
public override void Non_unicode_string_literal_is_used_for_non_unicode_column()
|
|
{
|
|
base.Non_unicode_string_literal_is_used_for_non_unicode_column();
|
|
|
|
AssertSql(
|
|
@"SELECT [c].[Name], [c].[Location]
|
|
FROM [City] AS [c]
|
|
WHERE [c].[Location] = 'Unknown'");
|
|
}
|
|
|
|
public override void Non_unicode_string_literal_is_used_for_non_unicode_column_right()
|
|
{
|
|
base.Non_unicode_string_literal_is_used_for_non_unicode_column_right();
|
|
|
|
AssertSql(
|
|
@"SELECT [c].[Name], [c].[Location]
|
|
FROM [City] AS [c]
|
|
WHERE 'Unknown' = [c].[Location]");
|
|
}
|
|
|
|
|
|
public override void Non_unicode_string_literals_in_contains_is_used_for_non_unicode_column()
|
|
{
|
|
base.Non_unicode_string_literals_in_contains_is_used_for_non_unicode_column();
|
|
|
|
AssertSql(
|
|
@"SELECT [c].[Name], [c].[Location]
|
|
FROM [City] AS [c]
|
|
WHERE [c].[Location] IN ('Unknown', 'Jacinto''s location', 'Ephyra''s location')");
|
|
}
|
|
|
|
|
|
public override void Non_unicode_string_literals_is_used_for_non_unicode_column_in_subquery()
|
|
{
|
|
base.Non_unicode_string_literals_is_used_for_non_unicode_column_in_subquery();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[Nickname] = 'Marcus') AND ([g.CityOfBirth].[Location] = 'Jacinto''s location'))");
|
|
}
|
|
|
|
public override void Non_unicode_string_literals_is_used_for_non_unicode_column_with_contains()
|
|
{
|
|
base.Non_unicode_string_literals_is_used_for_non_unicode_column_with_contains();
|
|
|
|
AssertSql(
|
|
@"SELECT [c].[Name], [c].[Location]
|
|
FROM [City] AS [c]
|
|
WHERE Instr(1, 'Jacinto', [c].[Location], 0) > 0");
|
|
}
|
|
|
|
public override void Non_unicode_string_literals_is_used_for_non_unicode_column_with_concat()
|
|
{
|
|
base.Non_unicode_string_literals_is_used_for_non_unicode_column_with_concat();
|
|
|
|
AssertSql(
|
|
@"SELECT [c].[Name], [c].[Location]
|
|
FROM [City] AS [c]
|
|
WHERE Instr(1, 'Add', [c].[Location] + 'Added', 0) > 0");
|
|
}
|
|
|
|
public override void Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_coalesce_result2()
|
|
{
|
|
base.Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_coalesce_result2();
|
|
|
|
AssertSql(
|
|
@"SELECT [g1].[Nickname], [g1].[SquadId], [g1].[AssignedCityName], [g1].[CityOrBirthName], [g1].[Discriminator], [g1].[FullName], [g1].[HasSoulPatch], [g1].[LeaderNickname], [g1].[LeaderSquadId], [g1].[Rank], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [Gear] AS [g1]
|
|
LEFT JOIN (
|
|
SELECT [g2].*
|
|
FROM [Gear] AS [g2]
|
|
WHERE [g2].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [g1].[LeaderNickname] = [t].[Nickname]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[FullName]",
|
|
//
|
|
@"SELECT [g2.Weapons].[Id], [g2.Weapons].[AmmunitionType], [g2.Weapons].[IsAutomatic], [g2.Weapons].[Name], [g2.Weapons].[OwnerFullName], [g2.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g2.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t0].[FullName]
|
|
FROM [Gear] AS [g10]
|
|
LEFT JOIN (
|
|
SELECT [g20].*
|
|
FROM [Gear] AS [g20]
|
|
WHERE [g20].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON [g10].[LeaderNickname] = [t0].[Nickname]
|
|
WHERE [g10].[Discriminator] IN ('Officer', 'Gear') AND [t0].[Nickname] IS NOT NULL
|
|
) AS [t1] ON [g2.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
public override void Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_coalesce_result3()
|
|
{
|
|
base.Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_coalesce_result3();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN (
|
|
SELECT [g2].*
|
|
FROM [Gear] AS [g2]
|
|
WHERE [g2].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [g].[LeaderNickname] = [t].[Nickname]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[FullName], [g].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g1].[FullName], [t2].[FullName] AS [FullName0]
|
|
FROM [Gear] AS [g1]
|
|
LEFT JOIN (
|
|
SELECT [g21].*
|
|
FROM [Gear] AS [g21]
|
|
WHERE [g21].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON [g1].[LeaderNickname] = [t2].[Nickname]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear') AND [t2].[Nickname] IS NULL
|
|
) AS [t3] ON [g.Weapons].[OwnerFullName] = [t3].[FullName]
|
|
ORDER BY [t3].[FullName0], [t3].[FullName]",
|
|
//
|
|
@"SELECT [g2.Weapons].[Id], [g2.Weapons].[AmmunitionType], [g2.Weapons].[IsAutomatic], [g2.Weapons].[Name], [g2.Weapons].[OwnerFullName], [g2.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g2.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
LEFT JOIN (
|
|
SELECT [g20].*
|
|
FROM [Gear] AS [g20]
|
|
WHERE [g20].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON [g0].[LeaderNickname] = [t0].[Nickname]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear') AND [t0].[Nickname] IS NOT NULL
|
|
) AS [t1] ON [g2.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
public override void Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_inheritance_and_coalesce_result()
|
|
{
|
|
base.Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_inheritance_and_coalesce_result();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN (
|
|
SELECT [g2].*
|
|
FROM [Gear] AS [g2]
|
|
WHERE [g2].[Discriminator] = 'Officer'
|
|
) AS [t] ON [g].[LeaderNickname] = [t].[Nickname]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[FullName], [g].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g1].[FullName], [t2].[FullName] AS [FullName0]
|
|
FROM [Gear] AS [g1]
|
|
LEFT JOIN (
|
|
SELECT [g21].*
|
|
FROM [Gear] AS [g21]
|
|
WHERE [g21].[Discriminator] = 'Officer'
|
|
) AS [t2] ON [g1].[LeaderNickname] = [t2].[Nickname]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear') AND [t2].[Nickname] IS NULL
|
|
) AS [t3] ON [g.Weapons].[OwnerFullName] = [t3].[FullName]
|
|
ORDER BY [t3].[FullName0], [t3].[FullName]",
|
|
//
|
|
@"SELECT [g2.Weapons].[Id], [g2.Weapons].[AmmunitionType], [g2.Weapons].[IsAutomatic], [g2.Weapons].[Name], [g2.Weapons].[OwnerFullName], [g2.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g2.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
LEFT JOIN (
|
|
SELECT [g20].*
|
|
FROM [Gear] AS [g20]
|
|
WHERE [g20].[Discriminator] = 'Officer'
|
|
) AS [t0] ON [g0].[LeaderNickname] = [t0].[Nickname]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear') AND [t0].[Nickname] IS NOT NULL
|
|
) AS [t1] ON [g2.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
public override void Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_conditional_result()
|
|
{
|
|
base.Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_conditional_result();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN (
|
|
SELECT [g2].*
|
|
FROM [Gear] AS [g2]
|
|
WHERE [g2].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [g].[LeaderNickname] = [t].[Nickname]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [t].[FullName], [g].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g1].[FullName], [t2].[FullName] AS [FullName0]
|
|
FROM [Gear] AS [g1]
|
|
LEFT JOIN (
|
|
SELECT [g21].*
|
|
FROM [Gear] AS [g21]
|
|
WHERE [g21].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON [g1].[LeaderNickname] = [t2].[Nickname]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear') AND [t2].[Nickname] IS NULL
|
|
) AS [t3] ON [g.Weapons].[OwnerFullName] = [t3].[FullName]
|
|
ORDER BY [t3].[FullName0], [t3].[FullName]",
|
|
//
|
|
@"SELECT [g2.Weapons].[Id], [g2.Weapons].[AmmunitionType], [g2.Weapons].[IsAutomatic], [g2.Weapons].[Name], [g2.Weapons].[OwnerFullName], [g2.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g2.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
LEFT JOIN (
|
|
SELECT [g20].*
|
|
FROM [Gear] AS [g20]
|
|
WHERE [g20].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON [g0].[LeaderNickname] = [t0].[Nickname]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear') AND [t0].[Nickname] IS NOT NULL
|
|
) AS [t1] ON [g2.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]");
|
|
}
|
|
|
|
public override void Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_complex_projection_result()
|
|
{
|
|
base.Include_on_GroupJoin_SelectMany_DefaultIfEmpty_with_complex_projection_result();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [t].[Nickname], [t].[SquadId], [t].[AssignedCityName], [t].[CityOrBirthName], [t].[Discriminator], [t].[FullName], [t].[HasSoulPatch], [t].[LeaderNickname], [t].[LeaderSquadId], [t].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN (
|
|
SELECT [g2].*
|
|
FROM [Gear] AS [g2]
|
|
WHERE [g2].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [g].[LeaderNickname] = [t].[Nickname]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g].[FullName], [t].[FullName]",
|
|
//
|
|
@"SELECT [g.Weapons].[Id], [g.Weapons].[AmmunitionType], [g.Weapons].[IsAutomatic], [g.Weapons].[Name], [g.Weapons].[OwnerFullName], [g.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [g0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
LEFT JOIN (
|
|
SELECT [g20].*
|
|
FROM [Gear] AS [g20]
|
|
WHERE [g20].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON [g0].[LeaderNickname] = [t0].[Nickname]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear') AND ([g0].[Nickname] IS NOT NULL AND [t0].[Nickname] IS NULL)
|
|
) AS [t1] ON [g.Weapons].[OwnerFullName] = [t1].[FullName]
|
|
ORDER BY [t1].[FullName]",
|
|
//
|
|
@"SELECT [g2.Weapons].[Id], [g2.Weapons].[AmmunitionType], [g2.Weapons].[IsAutomatic], [g2.Weapons].[Name], [g2.Weapons].[OwnerFullName], [g2.Weapons].[SynergyWithId]
|
|
FROM [Weapon] AS [g2.Weapons]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [t2].[FullName], [g1].[FullName] AS [FullName0]
|
|
FROM [Gear] AS [g1]
|
|
LEFT JOIN (
|
|
SELECT [g21].*
|
|
FROM [Gear] AS [g21]
|
|
WHERE [g21].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t2] ON [g1].[LeaderNickname] = [t2].[Nickname]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear') AND [t2].[Nickname] IS NOT NULL
|
|
) AS [t3] ON [g2.Weapons].[OwnerFullName] = [t3].[FullName]
|
|
ORDER BY [t3].[FullName0], [t3].[FullName]");
|
|
}
|
|
|
|
public override void Coalesce_operator_in_predicate()
|
|
{
|
|
base.Coalesce_operator_in_predicate();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE COALESCE([w].[IsAutomatic], 0) = 1");
|
|
}
|
|
|
|
public override void Coalesce_operator_in_predicate_with_other_conditions()
|
|
{
|
|
base.Coalesce_operator_in_predicate_with_other_conditions();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
WHERE ([w].[AmmunitionType] = 1) AND (COALESCE([w].[IsAutomatic], 0) = 1)");
|
|
}
|
|
|
|
public override void Coalesce_operator_in_projection_with_other_conditions()
|
|
{
|
|
base.Coalesce_operator_in_projection_with_other_conditions();
|
|
|
|
AssertSql(
|
|
@"SELECT CASE
|
|
WHEN ([w].[AmmunitionType] = 1) AND (COALESCE([w].[IsAutomatic], 0) = 1)
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END
|
|
FROM [Weapon] AS [w]");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_predicate()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_predicate();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE (([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL) AND ([t0].[HasSoulPatch] = True)");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_predicate2()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_predicate2();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE [t0].[HasSoulPatch] = True");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_predicate_negated()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_predicate_negated();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t0].[HasSoulPatch] <> 1) AND [t0].[HasSoulPatch] IS NOT NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_predicate_negated_complex1()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_predicate_negated_complex1();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE CASE
|
|
WHEN [t0].[HasSoulPatch] = True
|
|
THEN 1 ELSE [t0].[HasSoulPatch]
|
|
END <> 1");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_predicate_negated_complex2()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_predicate_negated_complex2();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE CASE
|
|
WHEN ([t0].[HasSoulPatch] <> 1) AND [t0].[HasSoulPatch] IS NOT NULL
|
|
THEN 0 ELSE [t0].[HasSoulPatch]
|
|
END <> 1");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_conditional_expression()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_conditional_expression();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE CASE
|
|
WHEN [t0].[HasSoulPatch] = True
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END = 1");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_binary_expression()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_binary_expression();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t0].[HasSoulPatch] = True) OR (Instr(1, 'Cole', [t].[Note], 0) > 0)");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_projection()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_projection();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_projection_into_anonymous_type()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_projection_into_anonymous_type();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_DTOs()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_DTOs();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId] AS [Id]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_list_initializers()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_list_initializers();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId], [t0].[SquadId] + 1
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_array_initializers()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_array_initializers();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_orderby()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_orderby();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL
|
|
ORDER BY [t0].[SquadId]");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_groupby()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_groupby();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[SquadId]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL
|
|
ORDER BY [t0].[SquadId]");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_all()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_all();
|
|
|
|
AssertSql(
|
|
@"SELECT CASE
|
|
WHEN NOT EXISTS (
|
|
SELECT 1
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE (([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL) AND ([t0].[HasSoulPatch] = False))
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_contains()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_contains();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE (([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL) AND [t0].[SquadId] IN (
|
|
SELECT [g].[SquadId]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
)");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_skip()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_skip();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
public override void Optional_navigation_type_compensation_works_with_take()
|
|
{
|
|
base.Optional_navigation_type_compensation_works_with_take();
|
|
|
|
AssertSql(
|
|
@"SELECT [t0].[SquadId]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [t.Gear].*
|
|
FROM [Gear] AS [t.Gear]
|
|
WHERE [t.Gear].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
WHERE ([t].[Note] <> 'K.I.A.') OR [t].[Note] IS NULL");
|
|
}
|
|
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Join_predicate_value_equals_condition()
|
|
{
|
|
base.Join_predicate_value_equals_condition();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [Weapon] AS [w] ON [w].[SynergyWithId] IS NOT NULL
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Join_predicate_value()
|
|
{
|
|
base.Join_predicate_value();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [Weapon] AS [w] ON [g].[HasSoulPatch] = True
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Join_predicate_condition_equals_condition()
|
|
{
|
|
base.Join_predicate_condition_equals_condition();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [Weapon] AS [w] ON CASE
|
|
WHEN [g].[FullName] IS NULL
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END = CASE
|
|
WHEN [w].[SynergyWithId] IS NULL
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Left_join_predicate_value_equals_condition()
|
|
{
|
|
base.Left_join_predicate_value_equals_condition();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [Weapon] AS [w] ON [w].[SynergyWithId] IS NOT NULL
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Left_join_predicate_value()
|
|
{
|
|
base.Left_join_predicate_value();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [Weapon] AS [w] ON [g].[HasSoulPatch] = True
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Left_join_predicate_condition_equals_condition()
|
|
{
|
|
base.Left_join_predicate_condition_equals_condition();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [Weapon] AS [w] ON CASE
|
|
WHEN [g].[FullName] IS NULL
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END = CASE
|
|
WHEN [w].[SynergyWithId] IS NULL
|
|
THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT)
|
|
END
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddDays()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddDays();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddHours()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddHours();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddMilliseconds()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddMilliseconds();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddMinutes()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddMinutes();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddMonths()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddMonths();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddSeconds()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddSeconds();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: DateTimeOffset not fully supported")]
|
|
public override void DateTimeOffset_DateAdd_AddYears()
|
|
{
|
|
base.DateTimeOffset_DateAdd_AddYears();
|
|
}
|
|
|
|
public override void Orderby_added_for_client_side_GroupJoin_composite_dependent_to_principal_LOJ_when_incomplete_key_is_used()
|
|
{
|
|
base.Orderby_added_for_client_side_GroupJoin_composite_dependent_to_principal_LOJ_when_incomplete_key_is_used();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [g].*
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON [t].[GearNickName] = [t0].[Nickname]
|
|
ORDER BY [t].[GearNickName]");
|
|
}
|
|
|
|
public override void Complex_predicate_with_AndAlso_and_nullable_bool_property()
|
|
{
|
|
base.Complex_predicate_with_AndAlso_and_nullable_bool_property();
|
|
|
|
AssertSql(
|
|
@"SELECT [w].[Id], [w].[AmmunitionType], [w].[IsAutomatic], [w].[Name], [w].[OwnerFullName], [w].[SynergyWithId]
|
|
FROM [Weapon] AS [w]
|
|
LEFT JOIN (
|
|
SELECT [w.Owner].*
|
|
FROM [Gear] AS [w.Owner]
|
|
WHERE [w.Owner].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [w].[OwnerFullName] = [t].[FullName]
|
|
WHERE ([w].[Id] <> 50) AND ([t].[HasSoulPatch] = False)");
|
|
}
|
|
|
|
public override void Distinct_with_optional_navigation_is_translated_to_sql()
|
|
{
|
|
base.Distinct_with_optional_navigation_is_translated_to_sql();
|
|
|
|
AssertSql(
|
|
@"SELECT DISTINCT [g].[HasSoulPatch]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g#Tag].[Note] <> 'Foo') OR [g#Tag].[Note] IS NULL)");
|
|
}
|
|
|
|
public override void Sum_with_optional_navigation_is_translated_to_sql()
|
|
{
|
|
base.Sum_with_optional_navigation_is_translated_to_sql();
|
|
|
|
AssertSql(
|
|
@"SELECT SUM([g].[SquadId])
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g#Tag].[Note] <> 'Foo') OR [g#Tag].[Note] IS NULL)");
|
|
}
|
|
|
|
public override void Count_with_optional_navigation_is_translated_to_sql()
|
|
{
|
|
base.Count_with_optional_navigation_is_translated_to_sql();
|
|
|
|
AssertSql(
|
|
@"SELECT COUNT(*)
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g#Tag].[Note] <> 'Foo') OR [g#Tag].[Note] IS NULL)");
|
|
}
|
|
|
|
public override void Count_with_unflattened_groupjoin_is_evaluated_on_client()
|
|
{
|
|
base.Count_with_unflattened_groupjoin_is_evaluated_on_client();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [t] ON ([g].[Nickname] = [t].[GearNickName]) AND ([g].[SquadId] = [t].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g].[Nickname], [g].[SquadId]");
|
|
}
|
|
|
|
public override void Distinct_with_unflattened_groupjoin_is_evaluated_on_client()
|
|
{
|
|
base.Distinct_with_unflattened_groupjoin_is_evaluated_on_client();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [t] ON ([g].[Nickname] = [t].[GearNickName]) AND ([g].[SquadId] = [t].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g].[Nickname], [g].[SquadId]");
|
|
}
|
|
|
|
public override void FirstOrDefault_with_manually_created_groupjoin_is_translated_to_sql()
|
|
{
|
|
base.FirstOrDefault_with_manually_created_groupjoin_is_translated_to_sql();
|
|
|
|
AssertSql(
|
|
@"SELECT TOP 1 [s].[Id], [s].[InternalNumber], [s].[Name]
|
|
FROM [Squad] AS [s]
|
|
LEFT JOIN (
|
|
SELECT [g].*
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t] ON [s].[Id] = [t].[SquadId]
|
|
WHERE [s].[Name] = 'Kilo'");
|
|
}
|
|
|
|
|
|
|
|
public override void Non_flattened_GroupJoin_with_result_operator_evaluates_on_the_client()
|
|
{
|
|
base.Non_flattened_GroupJoin_with_result_operator_evaluates_on_the_client();
|
|
|
|
AssertSql(
|
|
@"SELECT [t].[Id], [t].[GearNickName], [t].[GearSquadId], [t].[Note], [t0].[Nickname], [t0].[SquadId], [t0].[AssignedCityName], [t0].[CityOrBirthName], [t0].[Discriminator], [t0].[FullName], [t0].[HasSoulPatch], [t0].[LeaderNickname], [t0].[LeaderSquadId], [t0].[Rank]
|
|
FROM [CogTag] AS [t]
|
|
LEFT JOIN (
|
|
SELECT [g].*
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')
|
|
) AS [t0] ON ([t].[GearNickName] = [t0].[Nickname]) AND ([t].[GearSquadId] = [t0].[SquadId])
|
|
ORDER BY [t].[GearNickName], [t].[GearSquadId]");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Client_side_equality_with_parameter_works_with_optional_navigations()
|
|
{
|
|
base.Client_side_equality_with_parameter_works_with_optional_navigations();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g#Tag].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear')");
|
|
}
|
|
|
|
public override void Contains_with_local_nullable_guid_list_closure()
|
|
{
|
|
base.Contains_with_local_nullable_guid_list_closure();
|
|
|
|
AssertSql(
|
|
@"SELECT [e].[Id], [e].[GearNickName], [e].[GearSquadId], [e].[Note]
|
|
FROM [CogTag] AS [e]
|
|
WHERE [e].[Id] IN ('d2c26679-562b-44d1-ab96-23d1775e0926', '23cbcf9b-ce14-45cf-aafa-2c2667ebfdd3', 'ab1b82d7-88db-42bd-a132-7eef9aa68af4')");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Unnecessary_include_doesnt_get_added_complex_when_projecting_EF_Property()
|
|
{
|
|
base.Unnecessary_include_doesnt_get_added_complex_when_projecting_EF_Property();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[HasSoulPatch] = True)
|
|
ORDER BY [g].[Rank]");
|
|
}
|
|
|
|
public override void Order_by_is_properly_lifted_from_subquery_created_by_include()
|
|
{
|
|
base.Order_by_is_properly_lifted_from_subquery_created_by_include();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName], [g].[Rank]");
|
|
}
|
|
|
|
public override void Order_by_then_by_is_properly_lifted_from_subquery_created_by_include()
|
|
{
|
|
base.Order_by_then_by_is_properly_lifted_from_subquery_created_by_include();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName], [g].[Rank], [g].[Nickname] DESC");
|
|
}
|
|
|
|
public override void Multiple_order_bys_are_properly_lifted_from_subquery_created_by_include()
|
|
{
|
|
base.Multiple_order_bys_are_properly_lifted_from_subquery_created_by_include();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName], [g].[Nickname] DESC, [g].[Rank]");
|
|
}
|
|
|
|
public override void Order_by_is_properly_lifted_from_subquery_with_same_order_by_in_the_outer_query()
|
|
{
|
|
base.Order_by_is_properly_lifted_from_subquery_with_same_order_by_in_the_outer_query();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName]
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName]");
|
|
}
|
|
|
|
public override void Where_is_properly_lifted_from_subquery_created_by_include()
|
|
{
|
|
base.Where_is_properly_lifted_from_subquery_created_by_include();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g#Tag].[Id], [g#Tag].[GearNickName], [g#Tag].[GearSquadId], [g#Tag].[Note]
|
|
FROM [Gear] AS [g]
|
|
LEFT JOIN [CogTag] AS [g#Tag] ON ([g].[Nickname] = [g#Tag].[GearNickName]) AND ([g].[SquadId] = [g#Tag].[GearSquadId])
|
|
WHERE ([g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[FullName] <> 'Augustus Cole')) AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName]");
|
|
}
|
|
|
|
public override void Where_and_order_by_are_properly_lifted_from_subquery_created_by_tracking()
|
|
{
|
|
base.Where_and_order_by_are_properly_lifted_from_subquery_created_by_tracking();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName]
|
|
FROM [Gear] AS [g]
|
|
WHERE ([g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[FullName] <> 'Augustus Cole')) AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName], [g].[Rank]");
|
|
}
|
|
|
|
public override void Subquery_is_lifted_from_main_from_clause_of_SelectMany()
|
|
{
|
|
base.Subquery_is_lifted_from_main_from_clause_of_SelectMany();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[FullName] AS [Name1], [g2].[FullName] AS [Name2]
|
|
FROM [Gear] AS [g]
|
|
, [Gear] AS [g2]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND (([g].[HasSoulPatch] = True) AND ([g2].[HasSoulPatch] = False))
|
|
ORDER BY [g].[FullName], [g].[Rank]");
|
|
}
|
|
|
|
public override void Subquery_containing_SelectMany_projecting_main_from_clause_gets_lifted()
|
|
{
|
|
base.Subquery_containing_SelectMany_projecting_main_from_clause_gets_lifted();
|
|
|
|
AssertSql(
|
|
@"SELECT [gear].[FullName]
|
|
FROM [Gear] AS [gear]
|
|
, [CogTag] AS [tag]
|
|
WHERE [gear].[Discriminator] IN ('Officer', 'Gear') AND ([gear].[HasSoulPatch] = True)
|
|
ORDER BY [gear].[FullName], [tag].[Note]");
|
|
}
|
|
|
|
public override void Subquery_containing_join_projecting_main_from_clause_gets_lifted()
|
|
{
|
|
base.Subquery_containing_join_projecting_main_from_clause_gets_lifted();
|
|
|
|
AssertSql(
|
|
@"SELECT [gear].[Nickname]
|
|
FROM [Gear] AS [gear]
|
|
INNER JOIN [CogTag] AS [tag] ON [gear].[Nickname] = [tag].[GearNickName]
|
|
WHERE [gear].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [gear].[Nickname], [tag].[Note]");
|
|
}
|
|
|
|
public override void Subquery_containing_left_join_projecting_main_from_clause_gets_lifted()
|
|
{
|
|
base.Subquery_containing_left_join_projecting_main_from_clause_gets_lifted();
|
|
|
|
AssertSql(
|
|
@"SELECT [gear].[Nickname]
|
|
FROM [Gear] AS [gear]
|
|
LEFT JOIN [CogTag] AS [tag] ON [gear].[Nickname] = [tag].[GearNickName]
|
|
WHERE [gear].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [gear].[Nickname], [gear].[Rank]");
|
|
}
|
|
|
|
public override void Subquery_containing_join_gets_lifted_clashing_names()
|
|
{
|
|
base.Subquery_containing_join_gets_lifted_clashing_names();
|
|
|
|
AssertSql(
|
|
@"SELECT [gear].[Nickname]
|
|
FROM [Gear] AS [gear]
|
|
INNER JOIN [CogTag] AS [tag] ON [gear].[Nickname] = [tag].[GearNickName]
|
|
INNER JOIN [CogTag] AS [tag0] ON [gear].[Nickname] = [tag0].[GearNickName]
|
|
WHERE [gear].[Discriminator] IN ('Officer', 'Gear') AND (([tag].[GearNickName] <> 'Cole Train') OR [tag].[GearNickName] IS NULL)
|
|
ORDER BY [gear].[Nickname], [tag0].[Id], [tag].[Note]");
|
|
}
|
|
|
|
public override void Subquery_created_by_include_gets_lifted_nested()
|
|
{
|
|
base.Subquery_created_by_include_gets_lifted_nested();
|
|
|
|
AssertSql(
|
|
@"SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOrBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g.CityOfBirth].[Name], [g.CityOfBirth].[Location]
|
|
FROM [Gear] AS [g]
|
|
INNER JOIN [City] AS [g.CityOfBirth] ON [g].[CityOrBirthName] = [g.CityOfBirth].[Name]
|
|
WHERE ([g].[Discriminator] IN ('Officer', 'Gear') AND EXISTS (
|
|
SELECT 1
|
|
FROM [Weapon] AS [w]
|
|
WHERE [g].[FullName] = [w].[OwnerFullName])) AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[Nickname], [g].[Rank]");
|
|
}
|
|
|
|
public override void Subquery_is_not_lifted_from_additional_from_clause()
|
|
{
|
|
base.Subquery_is_not_lifted_from_additional_from_clause();
|
|
|
|
AssertSql(
|
|
@"SELECT [g1].[FullName] AS [Name1]
|
|
FROM [Gear] AS [g1]
|
|
WHERE [g1].[Discriminator] IN ('Officer', 'Gear') AND ([g1].[HasSoulPatch] = True)
|
|
ORDER BY [g1].[FullName]",
|
|
//
|
|
@"SELECT [g0].[HasSoulPatch], [g0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g0].[Rank]",
|
|
//
|
|
@"SELECT [g0].[HasSoulPatch], [g0].[FullName]
|
|
FROM [Gear] AS [g0]
|
|
WHERE [g0].[Discriminator] IN ('Officer', 'Gear')
|
|
ORDER BY [g0].[Rank]");
|
|
}
|
|
|
|
public override void Subquery_with_result_operator_is_not_lifted()
|
|
{
|
|
base.Subquery_with_result_operator_is_not_lifted();
|
|
|
|
AssertSql(
|
|
@"@__p_0='2'
|
|
|
|
SELECT [t].[FullName]
|
|
FROM (
|
|
SELECT TOP @__p_0 [g].*
|
|
FROM [Gear] AS [g]
|
|
WHERE [g].[Discriminator] IN ('Officer', 'Gear') AND ([g].[HasSoulPatch] = False)
|
|
ORDER BY [g].[FullName]
|
|
) AS [t]
|
|
ORDER BY [t].[Rank]");
|
|
}
|
|
|
|
public override void Member_access_on_derived_entity_using_cast()
|
|
{
|
|
base.Member_access_on_derived_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], [f].[Eradicated]
|
|
FROM [Faction] AS [f]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Member_access_on_derived_materialized_entity_using_cast()
|
|
{
|
|
base.Member_access_on_derived_materialized_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[CommanderName], [f].[Eradicated]
|
|
FROM [Faction] AS [f]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Member_access_on_derived_entity_using_cast_and_let()
|
|
{
|
|
base.Member_access_on_derived_entity_using_cast_and_let();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], [f].[Eradicated]
|
|
FROM [Faction] AS [f]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Property_access_on_derived_entity_using_cast()
|
|
{
|
|
base.Property_access_on_derived_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], [f].[Eradicated]
|
|
FROM [Faction] AS [f]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Navigation_access_on_derived_entity_using_cast()
|
|
{
|
|
base.Navigation_access_on_derived_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], [t].[ThreatLevel] AS [Threat]
|
|
FROM [Faction] AS [f]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander].*
|
|
FROM [LocustLeader] AS [f.Commander]
|
|
WHERE [f.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [f].[CommanderName] = [t].[Name]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Navigation_access_on_derived_materialized_entity_using_cast()
|
|
{
|
|
base.Navigation_access_on_derived_materialized_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[CommanderName], [f].[Eradicated], [t].[ThreatLevel]
|
|
FROM [Faction] AS [f]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander].*
|
|
FROM [LocustLeader] AS [f.Commander]
|
|
WHERE [f.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [f].[CommanderName] = [t].[Name]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Navigation_access_via_EFProperty_on_derived_entity_using_cast()
|
|
{
|
|
base.Navigation_access_via_EFProperty_on_derived_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], [t].[ThreatLevel] AS [Threat]
|
|
FROM [Faction] AS [f]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander].*
|
|
FROM [LocustLeader] AS [f.Commander]
|
|
WHERE [f.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [f].[CommanderName] = [t].[Name]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
public override void Navigation_access_fk_on_derived_entity_using_cast()
|
|
{
|
|
base.Navigation_access_fk_on_derived_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], [f].[CommanderName]
|
|
FROM [Faction] AS [f]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET")]
|
|
public override void Collection_navigation_access_on_derived_entity_using_cast()
|
|
{
|
|
base.Collection_navigation_access_on_derived_entity_using_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name], (
|
|
SELECT COUNT(*)
|
|
FROM [LocustLeader] AS [l]
|
|
WHERE [l].[Discriminator] IN ('LocustCommander', 'LocustLeader') AND ([f].[Id] = [l].[LocustHordeId])
|
|
) AS [LeadersCount]
|
|
FROM [Faction] AS [f]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name]");
|
|
}
|
|
|
|
|
|
[Fact(Skip = "Unsupported by JET: JOIN with unsupported ON PREDICATE")]
|
|
public override void Comparing_two_collection_navigations_inheritance()
|
|
{
|
|
base.Comparing_two_collection_navigations_inheritance();
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Collection_navigation_access_on_derived_entity_using_cast_in_SelectMany()
|
|
{
|
|
base.Collection_navigation_access_on_derived_entity_using_cast_in_SelectMany();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Name] AS [Name0], [f.Leaders].[Name] AS [LeaderName]
|
|
FROM [Faction] AS [f]
|
|
INNER JOIN [LocustLeader] AS [f.Leaders] ON [f].[Id] = [f.Leaders].[LocustHordeId]
|
|
WHERE (([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')) AND [f.Leaders].[Discriminator] IN ('LocustCommander', 'LocustLeader')
|
|
ORDER BY [LeaderName]");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Include_on_derived_entity_using_OfType()
|
|
{
|
|
base.Include_on_derived_entity_using_OfType();
|
|
|
|
AssertSql(
|
|
@"SELECT [lh].[Id], [lh].[CapitalName], [lh].[Discriminator], [lh].[Name], [lh].[CommanderName], [lh].[Eradicated], [t].[Name], [t].[Discriminator], [t].[LocustHordeId], [t].[ThreatLevel], [t].[DefeatedByNickname], [t].[DefeatedBySquadId]
|
|
FROM [Faction] AS [lh]
|
|
LEFT JOIN (
|
|
SELECT [lh.Commander].*
|
|
FROM [LocustLeader] AS [lh.Commander]
|
|
WHERE [lh.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [lh].[CommanderName] = [t].[Name]
|
|
WHERE [lh].[Discriminator] = 'LocustHorde'
|
|
ORDER BY [lh].[Name], [lh].[Id]",
|
|
//
|
|
@"SELECT [lh.Leaders].[Name], [lh.Leaders].[Discriminator], [lh.Leaders].[LocustHordeId], [lh.Leaders].[ThreatLevel], [lh.Leaders].[DefeatedByNickname], [lh.Leaders].[DefeatedBySquadId]
|
|
FROM [LocustLeader] AS [lh.Leaders]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [lh0].[Id], [lh0].[Name]
|
|
FROM [Faction] AS [lh0]
|
|
LEFT JOIN (
|
|
SELECT [lh.Commander0].*
|
|
FROM [LocustLeader] AS [lh.Commander0]
|
|
WHERE [lh.Commander0].[Discriminator] = 'LocustCommander'
|
|
) AS [t0] ON [lh0].[CommanderName] = [t0].[Name]
|
|
WHERE [lh0].[Discriminator] = 'LocustHorde'
|
|
) AS [t1] ON [lh.Leaders].[LocustHordeId] = [t1].[Id]
|
|
WHERE [lh.Leaders].[Discriminator] IN ('LocustCommander', 'LocustLeader')
|
|
ORDER BY [t1].[Name], [t1].[Id]");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Include_on_derived_entity_using_subquery_with_cast()
|
|
{
|
|
base.Include_on_derived_entity_using_subquery_with_cast();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[CommanderName], [f].[Eradicated], [t].[Name], [t].[Discriminator], [t].[LocustHordeId], [t].[ThreatLevel], [t].[DefeatedByNickname], [t].[DefeatedBySquadId]
|
|
FROM [Faction] AS [f]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander].*
|
|
FROM [LocustLeader] AS [f.Commander]
|
|
WHERE [f.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [f].[CommanderName] = [t].[Name]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name], [f].[Id]",
|
|
//
|
|
@"SELECT [f.Leaders].[Name], [f.Leaders].[Discriminator], [f.Leaders].[LocustHordeId], [f.Leaders].[ThreatLevel], [f.Leaders].[DefeatedByNickname], [f.Leaders].[DefeatedBySquadId]
|
|
FROM [LocustLeader] AS [f.Leaders]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [f0].[Id], [f0].[Name]
|
|
FROM [Faction] AS [f0]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander0].*
|
|
FROM [LocustLeader] AS [f.Commander0]
|
|
WHERE [f.Commander0].[Discriminator] = 'LocustCommander'
|
|
) AS [t0] ON [f0].[CommanderName] = [t0].[Name]
|
|
WHERE ([f0].[Discriminator] = 'LocustHorde') AND ([f0].[Discriminator] = 'LocustHorde')
|
|
) AS [t1] ON [f.Leaders].[LocustHordeId] = [t1].[Id]
|
|
WHERE [f.Leaders].[Discriminator] IN ('LocustCommander', 'LocustLeader')
|
|
ORDER BY [t1].[Name], [t1].[Id]");
|
|
}
|
|
|
|
[Fact(Skip = "Assertion failed without evident reason")]
|
|
public override void Include_on_derived_entity_using_subquery_with_cast_AsNoTracking()
|
|
{
|
|
base.Include_on_derived_entity_using_subquery_with_cast_AsNoTracking();
|
|
|
|
AssertSql(
|
|
@"SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[CommanderName], [f].[Eradicated], [t].[Name], [t].[Discriminator], [t].[LocustHordeId], [t].[ThreatLevel], [t].[DefeatedByNickname], [t].[DefeatedBySquadId]
|
|
FROM [Faction] AS [f]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander].*
|
|
FROM [LocustLeader] AS [f.Commander]
|
|
WHERE [f.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [f].[CommanderName] = [t].[Name]
|
|
WHERE ([f].[Discriminator] = 'LocustHorde') AND ([f].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f].[Name], [f].[Id]",
|
|
//
|
|
@"SELECT [f.Leaders].[Name], [f.Leaders].[Discriminator], [f.Leaders].[LocustHordeId], [f.Leaders].[ThreatLevel], [f.Leaders].[DefeatedByNickname], [f.Leaders].[DefeatedBySquadId]
|
|
FROM [LocustLeader] AS [f.Leaders]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [f0].[Id], [f0].[Name]
|
|
FROM [Faction] AS [f0]
|
|
LEFT JOIN (
|
|
SELECT [f.Commander0].*
|
|
FROM [LocustLeader] AS [f.Commander0]
|
|
WHERE [f.Commander0].[Discriminator] = 'LocustCommander'
|
|
) AS [t0] ON [f0].[CommanderName] = [t0].[Name]
|
|
WHERE ([f0].[Discriminator] = 'LocustHorde') AND ([f0].[Discriminator] = 'LocustHorde')
|
|
) AS [t1] ON [f.Leaders].[LocustHordeId] = [t1].[Id]
|
|
WHERE [f.Leaders].[Discriminator] IN ('LocustCommander', 'LocustLeader')
|
|
ORDER BY [t1].[Name], [t1].[Id]");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: , and OTHER JOIN")]
|
|
public override void Include_on_derived_entity_using_subquery_with_cast_cross_product_base_entity()
|
|
{
|
|
base.Include_on_derived_entity_using_subquery_with_cast_cross_product_base_entity();
|
|
|
|
AssertSql(
|
|
@"SELECT [f2].[Id], [f2].[CapitalName], [f2].[Discriminator], [f2].[Name], [f2].[CommanderName], [f2].[Eradicated], [t].[Name], [t].[Discriminator], [t].[LocustHordeId], [t].[ThreatLevel], [t].[DefeatedByNickname], [t].[DefeatedBySquadId], [ff].[Id], [ff].[CapitalName], [ff].[Discriminator], [ff].[Name], [ff].[CommanderName], [ff].[Eradicated], [ff.Capital].[Name], [ff.Capital].[Location]
|
|
FROM [Faction] AS [f2]
|
|
LEFT JOIN (
|
|
SELECT [f2.Commander].*
|
|
FROM [LocustLeader] AS [f2.Commander]
|
|
WHERE [f2.Commander].[Discriminator] = 'LocustCommander'
|
|
) AS [t] ON [f2].[CommanderName] = [t].[Name]
|
|
, [Faction] AS [ff]
|
|
LEFT JOIN [City] AS [ff.Capital] ON [ff].[CapitalName] = [ff.Capital].[Name]
|
|
WHERE ([f2].[Discriminator] = 'LocustHorde') AND ([f2].[Discriminator] = 'LocustHorde')
|
|
ORDER BY [f2].[Name], [ff].[Name], [f2].[Id]",
|
|
//
|
|
@"SELECT [f2.Leaders].[Name], [f2.Leaders].[Discriminator], [f2.Leaders].[LocustHordeId], [f2.Leaders].[ThreatLevel], [f2.Leaders].[DefeatedByNickname], [f2.Leaders].[DefeatedBySquadId]
|
|
FROM [LocustLeader] AS [f2.Leaders]
|
|
INNER JOIN (
|
|
SELECT DISTINCT [f20].[Id], [f20].[Name], [ff0].[Name] AS [Name0]
|
|
FROM [Faction] AS [f20]
|
|
LEFT JOIN (
|
|
SELECT [f2.Commander0].*
|
|
FROM [LocustLeader] AS [f2.Commander0]
|
|
WHERE [f2.Commander0].[Discriminator] = 'LocustCommander'
|
|
) AS [t0] ON [f20].[CommanderName] = [t0].[Name]
|
|
, [Faction] AS [ff0]
|
|
LEFT JOIN [City] AS [ff.Capital0] ON [ff0].[CapitalName] = [ff.Capital0].[Name]
|
|
WHERE ([f20].[Discriminator] = 'LocustHorde') AND ([f20].[Discriminator] = 'LocustHorde')
|
|
) AS [t1] ON [f2.Leaders].[LocustHordeId] = [t1].[Id]
|
|
WHERE [f2.Leaders].[Discriminator] IN ('LocustCommander', 'LocustLeader')
|
|
ORDER BY [t1].[Name], [t1].[Name0], [t1].[Id]");
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: operators on IMAGE and TEXT data types are not supported")]
|
|
public override void Select_subquery_distinct_firstordefault()
|
|
{
|
|
base.Select_subquery_distinct_firstordefault();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: subqueries supported only in FROM clause")]
|
|
public override void Where_subquery_distinct_firstordefault_boolean()
|
|
{
|
|
base.Where_subquery_distinct_firstordefault_boolean();
|
|
}
|
|
|
|
[Fact(Skip = "Unsupported by JET: subqueries supported only in FROM clause")]
|
|
public override void Where_subquery_distinct_orderby_firstordefault_boolean()
|
|
{
|
|
base.Where_subquery_distinct_orderby_firstordefault_boolean();
|
|
}
|
|
|
|
private void AssertSql(params string[] expected)
|
|
=> Fixture.TestSqlLoggerFactory.AssertSql(expected);
|
|
|
|
private void AssertContains(params string[] expected)
|
|
=> Fixture.TestSqlLoggerFactory.AssertContains(expected);
|
|
|
|
|
|
protected override void ClearLog()
|
|
=> Fixture.TestSqlLoggerFactory.Clear();
|
|
}
|
|
} |