Как получить все свойства объекта, который находится внутри другого объекта с кодом C #? - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть три таблицы в SQL Server:

Evaluations (id, textreview, stars, userId, BookId)    
Books      (id, title, ..., userId)    
Users      (id, name, ...)

И у меня есть этот код для получения данных из моих таблиц:

public List<Evaluations> GetAllEvaluationsPerBook()
{
    string sqlCommand = "SELECT DISTINCT b.Title,ev.TextReview,ev.Stars, b.Id " +
                        "FROM[Services.BookDbContext].[dbo].[Evaluations] as ev, " +
                            "[Services.BookDbContext].[dbo].Books as b " +
                        "WHERE b.Id = ev.Book_Id";

    using (var context = new BookDbContext())
    {
        var evaluation = context.Evaluation.SqlQuery(sqlCommand).ToList();

        return evaluation;
    }
}

Сейчас я создаю проект WebApi на C # с EF6. Я использую Действия с HttpPost. В одном из них мне нужно извлечь некоторые объекты из БД и отправить их клиенту, такому как Fiddler, в формате json. В частности, я хочу получить название книги вместе со всеми оценками.

Теперь мне нужно создать JSON ниже, используя код выше:

{"id":1,    "textReview":"Good",     "stars":3, "book":null,    "user":null},    
{"id":2,    "textReview":"Awfull",   "stars":1, "book":null,    "user":null},    
{"id":1,    "textReview":"Good",     "stars":3, "book":null,    "user":null},    
{"id":4,    "textReview":"Very Good","stars":4, "book":null,    "user":null}

Е.Г .: Ниже вы можете увидеть результат, который я получаю из БД, но я не могу отобразить его в формате json:

https://i.stack.imgur.com/dky9c.png

Как я могу это сделать?

1 Ответ

0 голосов
/ 16 ноября 2018

Я только что нашел ответ, который хотел:

public List<Evaluations> GetAllEvaluationsPerBook()
    {
        using (var context = new BookDbContext())
        {
            var evaluations = context.Evaluation.ToList();
            var books = context.Book.ToList();
            var users = context.User.ToList();

            return evaluations;
        }
    }

Таким образом, код всегда запускается строка за строкой.
Переменная оценки создает список, заполняя все свои собственныесвойства, кроме объектов Book и User, которые остаются нулевыми:

{  
   "id":1,
   "textReview":"The Book is good.",
   "stars":3,
   "book":null,
   "user":null
}

После «запуска» следующей строки он заполняет список книг.Но он также заполняет предыдущий список оценок новым списком книг:

{  
   "id":1,
   "textReview":"The Book is good.",
   "stars":3,
   "book":{  
      "isbn":1,
      "title":"The Tomb",
      "author":"H. P. Lovecraft",
      "user":null
   },
   "user":null
}

Наконец, он "запускает" строку с пользователями (извлекая всех пользователей из БДи создание списка пользователей) и автоматически заполняет предыдущие списки, поэтому у меня есть вся информация, извлеченная из базы данных.

...