ASP.NET Core MVC + Entity Framework + GET + Массив - PullRequest
0 голосов
/ 02 февраля 2019

Я делаю несколько тестов, чтобы взять проект.Я работал с ASP.NET Core MVC и Entity Framework относительно недавно.У меня есть простая база данных в SQL Server, чтобы доказать, как это:

enter image description here

В тестовом проекте у меня есть контроллер TestController;код такой:

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using WEBAPPHTTP.Models;

namespace WEBAPPHTTP.Controllers
{
    [Route ("api/controller[]")]
    public class TestController: Controller
    {
        [HttpGet("/api/values")]
        public IEnumerable<string> Get()
        {
            using (TareasContext db = new TareasContext())
            {
                var listar = db.Tareas;
                var n = listar.Count();

                string[] array = new string[n+1];
                int i = 0;
                foreach (var otareas in listar)
                {
                    array[i] = otareas.Tarea.ToString();
                    i = i++;
                }

                return array;
            }
        }
    }
}

Очевидно, что я делаю что-то не так, но вывод такой:

в localhost / api / values:

["ahora",null,null,null,null]

Этопоказывает только последнюю запись базы данных, за которой следуют несколько NULL, в этом тесте идея состоит в том, что все результаты загружаются в массив.

Я уверен, что это очень ранняя ошибка, я надеюсь, что вы можетеведи меня.

Ответы [ 2 ]

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

Ваш код не эффективен.Это гораздо более чистая версия, которая делает то же самое:

using (TareasContext db = new TareasContext())
{
    var result = db.Tareas.Select(x => x.Tarea).ToList();
    return result;
}

Как я вижу, столбец Tarea имеет тип varchar или nvarchar.Так что вам не нужно приводить его в строку.

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

Я не знаю, что вы хотите сделать после этого, но если вы просто хотите перечислить свои предметы, вы сможете сделать что-то вроде этого:

using (TareasContext db = new TareasContext())
        {
            return db.Tareas.ToList();

        }

Это даст вам полноесписок со всеми элементами в нем со всеми свойствами, если вы хотите, чтобы только часть ваших свойств, я бы посоветовал сделать .Select.Не забывайте также делать «где», чтобы вы не всегда возвращали полный список (если он набирает большое количество)

Peace!

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