У меня в базе данных есть СП. Для EF4.1 с использованием DbContext API .
После импорта функции из модели данных ссылки на хранимую процедуру отлично работают в моей среде разработки. Но при публикации на сервере происходит сбой с сообщением вроде: FunctionImport «SqlSearch» не может быть найден в контейнере «TallyJ2Entities». Все остальные данные работают нормально.
Похоже, что при производстве некоторые аспекты конфигурации EF4 забыты.
Базы данных идентичны, и оба сервера - SQL 2008 (локальный - Express SP1 10.50.2500, хост - Express RTM 10.50.1600).
Я даже указал редактору EDMX прямо на производственную базу данных и обновил. Результат работал нормально при разработке, но не работал на сервере.
Другие похожие вопросы здесь не помогают. У кого-то похожая проблема введите описание ссылки здесь .
Есть предложения?
Обновление: Я обнаружил, что проблема исчезает, когда я развертываю хост в режиме отладки!
Внутри моего класса, производного от DbContext, я поместил этот код:
((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace
var findFunction = metadataWorkspace.GetItems(DataSpace.SSpace)
.SelectMany(gi => gi.MetadataProperties)
.Where(m=> Equals(m.Value, "SqlSearch"))
.Select(m => "Found {0}".FilledWith(m.Value))
.FirstOrDefault();
Когда я зарегистрировал результат findFunction
, оказалось, что сервер (в режиме выпуска) НЕ нашел его, пока он находился в разработке, нашлось.