Я получаю сообщение об ошибке при попытке выполнить FunctionImport
- результат сопоставлен с POCO ComplexType - из пользовательского ObjectContext
.В частности, состояние ошибки:
Параметр типа BlahComplexType
в ExecuteFunction несовместим с типом BlahComplexType
, возвращаемым функцией.
Поскольку я используюпользовательский ObjectContext
(я работаю с полностью POCO Entity Framework), я должен вызвать FunctionImport
вручную, что мне нравится:
var blah = ExecuteFunction<BlahComplexType>("GetBlah", MergeOption.NoTracking,
new ObjectParameter("p_one", paramOne),
new ObjectParameter("p_two", paramTwo),
new ObjectParameter("p_three", string.Empty));
Я не использую никаких шаблонов T4 длягенерировать POCO, все классы пишутся вручную.BlahComplexType
- это класс с простыми свойствами типа данных.Его определение совпадает с определением ComplexType в файле .edmx, включая совпадающие пространства имен и все остальное (у меня также есть множество других сущностей и сложных типов, сопоставленных с POCO).
В документации MSDN указано здесь , что возвращаемый тип ExecuteFunction<T>
должен реализовывать IEntityWithChangeTracker
, но не весь смысл отображения в ComplexType вместо Entity именно потому, что меня не волнуют какие-либо изменения (фактически, измененияне допускаются - BlahComplexType считается «объектом-значением»)?
Кто-нибудь имел счастье вызывать FunctionImport с ExecuteFunction, результаты которого отображаются в POCO ComplexType с Entity Framework 4?