Asp.Net Mvc Entity Framework Десериализованный объект Запрос Linq нулевой объект - PullRequest
0 голосов
/ 24 февраля 2019

Я десериализирую файл JSON в мои классы сущностей.для упрощения, давайте предположим, что это мои классы

public class Result{
 ...
 public List<Sens> senses { get; set; }
}
public class Sens{
...    
 public Object definition { get; set; }
 }

После десериализации моего JSON в Result Object, который я вставляю в базу данных.Там нет ошибки, и я могу вставить результат и чувства без конфликта.Но когда я вызываю Result из базы данных с помощью запроса LINQ, как этот, я получаю объект Result, но мои чувства обнуляются. Вопрос 1 Почему и как я могу решить эту проблему

var results =(from r in db.Results
         where r.headword == Id
         select r).ToList();

Я пытаюсь добавить свои чувства к Результату следующим образом

 foreach (Result item in resultmodel.Results)
 {
     item.senses = (from s in db.Senses
                           join r in db.Results on s.res equals r
                           where r.Id_ == item.Id_
                           select s).ToList();
 }

Я могу добавить, но когда я пытаюсьчтобы показать чувства с моей точки зрения, я получаю

System.Collections.Generic.List`1 [System.String]

Но я жду, что это будет строка Вопрос 2 что не так с моим подходом.

1 Ответ

0 голосов
/ 25 февраля 2019

Не будет проблем, если вы преобразуете вашу строку JSON в объект c #.Но взамен вы хотите отобразить строку на объект.Что это за объект?Какие свойства?C # ничего не знает об этом.

В одном из моих проектов у меня была похожая проблема при записи и чтении с сервера Redis Cache.Я добавил определения типов при сериализации объекта и десериализовал эти типы.

Сериализация:

var jsonString = JsonConvert.SerializeObject(item, _settings);
return Encoding.UTF8.GetBytes(jsonString);

Десериализация:

JsonConvert.DeserializeObject<T>(jsonString, _settings);

Настройки:

private static readonly JsonSerializerSettings _settings = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All,
    Formatting = Formatting.None,
    NullValueHandling = NullValueHandling.Ignore,
    DefaultValueHandling = DefaultValueHandling.Ignore
}

Надеюсь, это поможет.

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