На сервере возникла ошибка при обработке запроса. Подробнее см. Журналы сервера.
У меня простая проблема.
Я создал службу данных WCF 5.6 в visual studio 2013 и в файле *.svc.cs
, измененную строку
public class CustomdataService : DataService< /* TODO: put your data source class name here */ >
для подключения моих объектов
public class CustomdataService : DataService< SchedulerEntities >
Но когда я хочу видеть службу в браузере, она дает мне следующую ошибку
Ошибка запроса
Сервер обнаружил ошибку при обработке запроса. Подробнее см. Журналы сервера.
Структура сущности - это не что иное, как одна таблица...
Ответы
Ответ 1
Кажется, что Entity Framework 6 и WCF Data Services 5.6.0 нуждаются в некотором провайдере для совместной работы, читайте больше на Использование служб WCF Data Services 5.6.0 с Entity Framework 6+.
Вы можете загрузить провайдера просто с помощью диспетчера консоли пакетов NuGet:
Install-Package Microsoft.OData.EntityFrameworkProvider -Pre
Его версия - альфа-2, поэтому в будущем поиск окончательной версии. это работало для меня однако.
Последняя вещь, вместо использования DataService<T>
, вам нужно использовать EntityFrameworkDataService<T>
. T
- это имя ваших объектов.
Ответ 2
Фактическая ошибка может быть разной. В моем случае я получил общее сообщение об ошибке при запуске с базы данных AdventureWorks2012.
Таким образом, реальную проблему можно увидеть, добавив атрибут в класс службы, как описано в здесь:
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class WcfDataServiceAW : EntityFrameworkDataService<AdventureWorks2012Entities> { ... }
Надеюсь, что это поможет кому-то.
PS. Моя ошибка:
Сообщение об исключении: "Свойство" SpatialLocation "по типу" Адрес "имеет тип" География ", который не является поддерживаемым примитивным типом.".
Ответ 3
Согласно этот пост, вам нужно изменить унаследованный тип CustomdataService
.
Замените базовый тип вашего DataService. Для EF 5 или ниже ваша служба данных должна наследовать от DataService, где T - DbContext или ObjectContext. Для EF 6 или выше ваша служба данных должна наследовать от EntityFrameworkDataService, где T - DbContext. Подробнее см. Раздел "Разница между DataService и EntityFrameworkDataService" ниже.
Ответ 4
перейдите к edmx, на диаграмме удалите все таблицы, пока не останется единственная, которую вы хотите, тогда все должно быть в порядке, не может иметь все таблицы, это то, что я нашел,
К. Т. Вонг