c # Возвращение данных таблицы в getrequest дает ошибку, если таблица находится в отношении - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть веб-страница, которая должна отображать данные в запросе getrequest. Он отлично работает на одной таблице, но если таблица имеет отношение один ко многим - это дает ошибку.

        public IEnumerable<Måledata> Get()
    {

            using (SCTHDBEntitiesNew e = new SCTHDBEntitiesNew())
        {
                return e.Måledata.ToList(); 
        }
    }

Ошибка, которую он дает:

{"Message": "Произошла ошибка.", "ExceptionMessage": "Типу ObjectContent`1 'не удалось сериализовать тело ответа для типа контента application / json; charset = utf-8'." , "ExceptionType": "System.InvalidOperationException", "StackTrace": null, "InnerException": {"Message": "Произошла ошибка.", "ExceptionMessage": "Ошибка при получении значения из 'BuildBoard' 'в системе. Data.Entity.DynamicProxies.Måledata_1EDB55943DE25861C91C9B0997AA34B305E0BBE0570E46E0B9205C41772E4B1A '. "," ExceptionType ":" Newtonsoft.Json.Json.Jet.Jet. .Serialization.JsonSerializerInternalWriter.CalculatePropertyValues ​​(модуль записи JsonWriter, значение объекта, контракт JsonContainerContract, член JsonProperty, свойство JsonProperty, JsonContract & memberContract, Object & memberValue) Контракт onObjectContract, член JsonProperty, JsonContainerContract collectionContract, JsonProperty containerProperty) \ r \ n ved .........

Надеясь, что кто-то может помочь - долгосрочная постоянная раздражающая проблема

Ответы [ 3 ]

0 голосов
/ 02 сентября 2018

Ответ от Mahesh B имел решение - последняя ссылка сработала - мне пришлось добавить e.Configuration.ProxyCreationEnabled = false; на мой контроллер, где я хочу вернуть содержимое данных.

Но я не уверен, что делает ProxyCreationEnabled - так что, если кто-нибудь знает? : -)

0 голосов
/ 02 сентября 2018

В Global.asax перейдите к методу Application_Start и введите следующее:

HttpConfiguration config = GlobalConfiguration.Configuration;

config.Formatters.JsonFormatter
            .SerializerSettings
            .ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

У вас есть другое решение, если выше не работает:

Вместо использования dataContext.TableName.ToList() используйте dataContext.TableName.ToArray()

0 голосов
/ 01 сентября 2018

Решение вашей проблемы объясняется здесь. Пожалуйста, посмотрите

Не удалось сериализовать ответ в Web API с помощью Json

Web API и EF вызывают InvalidOperationException

Обновлено в соответствии с вашими комментариями - Пожалуйста, посмотрите здесь -

EF 6.1 Разница между ProxyCreationEnabled и LazyLoadingEnabled

https://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.dbcontextconfiguration.proxycreationenabled(v=vs.113).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...