Я новичок в Entity Framework и продолжаю получать EntityCommandCompilationException
specified method not supported
в Entity Framework. Я не могу понять, почему это исключение возникает.EntityCommandCompilationException указанный метод не поддерживается Entity Framework
Я создал пользовательскую функцию агрегации UDF my_Func()
для моей установки сервера MySQL 5.7 с использованием опубликованных рекомендаций here. Он работает так же, как и любая обычная агрегированная функция, например. Сумма() будет работать. то есть я могу выполнить оператор select my_Func(Column4) from db.table
и он возвращает желаемый результат в виде double
. Я протестировал его, и он работает на сервере MySQL. Я хочу иметь возможность использовать этот метод в запросе linq для сущностей, и для этого я сделал следующее.
using (var context = new dbEntities())
{
var results = from items in context.table
group items by new
{ items.Column1, items.Column2 } into groupingItem
select new OutputType()
{
GroupedResult = groupingItem.OrderBy(x => x.Column3).Select(x => x.Column4).my_Func()
};
}
Я создал статический класс, который содержит метод.
public static class ModelDefinedFunctions
{
[DbFunction("dbModel.Store", "my_Func")]
public static double my_Func(this IEnumerable<double> items)
{
throw new NotSupportedException("Direct calls are not supported.");
}
}
в EDMX-файл я добавил следующие теги вручную
<Function Name="my_Func" ReturnType="double" Aggregate="true"
BuiltIn="false" NiladicFunction="false"
IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="db">
<Parameter Name="value" Type="Collection(double)" Mode="In" />
</Function>
ли это решить проблему http://stackoverflow.com/a/27029331/6733826? – Mathieu
Нет, нет. У меня нет командного текста, а issoposable в моем коде установлено в true. –
Может быть, я дурак, но действительно ли схема базы данных «db», а не «dbo»? – Mathieu