Fix type mapping for Time of Day methods which needs to be TimeSpan

pull/257/head
Christopher Jolly 1 year ago
parent 1e091fdefd
commit 74c7e3f527

@ -109,7 +109,7 @@ namespace EntityFrameworkCore.Jet.Query.ExpressionTranslators.Internal
false, false,
new[] { false }, new[] { false },
returnType)), returnType)),
nameof(DateTime.TimeOfDay) => _sqlExpressionFactory.NullChecked( nameof(DateTime.TimeOfDay) => TimeSpanNullChecked(
instance!, instance!,
_sqlExpressionFactory.Function( _sqlExpressionFactory.Function(
"TIMEVALUE", "TIMEVALUE",
@ -135,8 +135,22 @@ namespace EntityFrameworkCore.Jet.Query.ExpressionTranslators.Internal
new CaseWhenClause( new CaseWhenClause(
_sqlExpressionFactory.IsNull(checkSqlExpression), _sqlExpressionFactory.IsNull(checkSqlExpression),
_sqlExpressionFactory.Constant( _sqlExpressionFactory.Constant(
null,typeof(string), null,typeof(DateTime),
checkSqlExpression.TypeMapping)) notNullSqlExpression.TypeMapping))
},
notNullSqlExpression);
public CaseExpression TimeSpanNullChecked(
SqlExpression checkSqlExpression,
SqlExpression notNullSqlExpression)
=> (CaseExpression)_sqlExpressionFactory.Case(
new[]
{
new CaseWhenClause(
_sqlExpressionFactory.IsNull(checkSqlExpression),
_sqlExpressionFactory.Constant(
null,typeof(TimeSpan),
notNullSqlExpression.TypeMapping))
}, },
notNullSqlExpression); notNullSqlExpression);
} }

@ -5952,10 +5952,8 @@ ORDER BY `g`.`Nickname`, `m`.`Id`
AssertSql( AssertSql(
""" """
SELECT ('HasSoulPatch ' & (`g`.`HasSoulPatch` & '')) & ' HasSoulPatch', ('Rank ' & (`g`.`Rank` & '')) & ' Rank', ('SquadId ' & (`g`.`SquadId` & '')) & ' SquadId', ('Rating ' & IIF((`m`.`Rating` & '') IS NULL, '', (`m`.`Rating` & ''))) & ' Rating', `m`.`Id`, `m`.`CodeName`, `m`.`Rating` SELECT TIMEVALUE(`m`.`Timeline`)
FROM `Gears` AS `g`, FROM `Missions` AS `m`
`Missions` AS `m`
ORDER BY `g`.`Nickname`, `m`.`Id`
"""); """);
} }
@ -7515,7 +7513,7 @@ ORDER BY NOT (`w0`.`IsAutomatic`)
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Difficulty`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline` SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Difficulty`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
FROM `Missions` AS `m` FROM `Missions` AS `m`
WHERE DATEVALUE(`m`.`Timeline`) >= @__dateTimeOffset_Date_0 WHERE DATEVALUE(`m`.`Timeline`) >= CDATE(@__dateTimeOffset_Date_0)
"""); """);
} }

@ -2305,8 +2305,8 @@ FROM `Orders` AS `o`
AssertSql( AssertSql(
""" """
SELECT CONVERT(time, [o].[OrderDate]) SELECT IIF(`o`.`OrderDate` IS NULL, NULL, TIMEVALUE(`o`.`OrderDate`))
FROM [Orders] AS [o] FROM `Orders` AS `o`
"""); """);
} }

@ -1832,8 +1832,10 @@ WHERE (
await base.Time_of_day_datetime(isAsync); await base.Time_of_day_datetime(isAsync);
AssertSql( AssertSql(
$@"SELECT CAST(`o`.`OrderDate` AS time) """
FROM `Orders` AS `o`"); SELECT IIF(`o`.`OrderDate` IS NULL, NULL, TIMEVALUE(`o`.`OrderDate`))
FROM `Orders` AS `o`
""");
} }
public override async Task TypeBinary_short_circuit(bool isAsync) public override async Task TypeBinary_short_circuit(bool isAsync)

@ -8279,8 +8279,8 @@ ORDER BY `u`.`Nickname`, `m`.`Id`
AssertSql( AssertSql(
""" """
SELECT CONVERT(time, [m].[Timeline]) SELECT TIMEVALUE(`m`.`Timeline`)
FROM [Missions] AS [m] FROM `Missions` AS `m`
"""); """);
} }
@ -10308,7 +10308,7 @@ ORDER BY NOT (`w0`.`IsAutomatic`)
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Difficulty`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline` SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Difficulty`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
FROM `Missions` AS `m` FROM `Missions` AS `m`
WHERE DATEVALUE(`m`.`Timeline`) >= @__dateTimeOffset_Date_0 WHERE DATEVALUE(`m`.`Timeline`) >= CDATE(@__dateTimeOffset_Date_0)
"""); """);
} }

@ -6585,8 +6585,8 @@ ORDER BY `g`.`Nickname`, `m`.`Id`
AssertSql( AssertSql(
""" """
SELECT CONVERT(time, [m].[Timeline]) SELECT TIMEVALUE(`m`.`Timeline`)
FROM [Missions] AS [m] FROM `Missions` AS `m`
"""); """);
} }
@ -8299,7 +8299,7 @@ ORDER BY NOT (`w0`.`IsAutomatic`)
SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Difficulty`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline` SELECT `m`.`Id`, `m`.`CodeName`, `m`.`Date`, `m`.`Difficulty`, `m`.`Duration`, `m`.`Rating`, `m`.`Time`, `m`.`Timeline`
FROM `Missions` AS `m` FROM `Missions` AS `m`
WHERE DATEVALUE(`m`.`Timeline`) >= @__dateTimeOffset_Date_0 WHERE DATEVALUE(`m`.`Timeline`) >= CDATE(@__dateTimeOffset_Date_0)
"""); """);
} }

Loading…
Cancel
Save