Надеюсь, довольно простой вопрос: я хочу использовать встроенные функции MySQL точно так же, как YEARWEEK или INSERT в Entity Framework 6 (аналогично пространству имен System.Data.Entity.DbFunctions
).Есть ли способ добавить сопоставление для этих функций?
Я уже пытался добавить их через файл edmx, но это не сработало.
<!-- edmx:ConceptualModels -->
<Function Name="YearWeek" ReturnType="String">
<Parameter Name="date" Type="DateTime" />
<DefiningExpression>
YEARWEEK(date, 3)
</DefiningExpression>
</Function>
<!-- edmx:StorageModels -->
<Function Name="YEARWEEK" IsComposable="true" ReturnType="varchar" BuiltIn="true" Aggregate="false" NiladicFunction="false" ParameterTypeSemantics="AllowImplicitConversion">
<Parameter Name="date" Type="datetime" Mode="In" />
<Parameter Name="mode" Type="int" Mode="In" />
</Function>
И в моемc # код:
[System.Data.Entity.DbFunction("otrsModel", "YearWeek")]
public static string YearWeek(DateTime date) {
throw new NotSupportedException("Direct calls are not supported.");
}
Это, прямо сейчас, бросает мне System.Data.Entity.Core.EntityCommandCompilationException
.Внутреннее исключение: "'YEARWEEK' не может быть преобразован в допустимый тип или функцию."
Однако вызов следующего кода в той же базе данных работает нормально:
var week = db.Database.SqlQuery<dynamic>("SELECT INSERT(YEARWEEK(create_time, 3), 5, 0, '/'), ticket.* AS a FROM ticket").ToList();
Есть идеи, что здесь не так?