首页 > 解决方案 > ASP.NET Core MVC + 实体框架 + GET + 数组

问题描述

我正在做一些测试来做一个项目。我最近一直在使用 ASP.NET Core MVC 和 Entity Framework。我在 SQL Server 中有一个简单的数据库来证明它是如何实现的:

在此处输入图像描述

在测试项目中,我有一个控制器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/值中:

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

它只显示我数据库的最后一条记录后跟几个NULL,这个测试的想法是所有结果都加载到数组中。

我确定这是一个很早的错误,希望您能指导我。

标签: c#entity-frameworkasp.net-core-mvc

解决方案


你的代码效率不高。这是执行相同操作的更简洁的版本:

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

如我所见,该Tarea列属于varcharnvarchar类型。因此,您无需将其转换为字符串。


推荐阅读