我做了一些测试,采取一个项目。我一直在使用ASP.NET 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;
}
}
}
}
很显然,我做错了什么,但输出是这样的:
在本地主机/ API /值:
["ahora",null,null,null,null]
这只能说明我的数据库跟着几个空的最后一条记录,该测试的想法是,所有的结果都在阵列中加载。
我敢肯定,这是一个非常早期的错误,我希望你能指导我。
我不知道你想在这之后的事,但如果你只是想列出你的项目,你应该能够做这样的事情:
using (TareasContext db = new TareasContext())
{
return db.Tareas.ToList();
}
这会给你的完整列表,在它的所有项目的所有属性,如果你想只说自己的特性,我建议做。选择以及一部分。请记住,做一个地方,以及所以你不要总是返回完整列表(如果它得到enourmus大)
和平!
你的代码是没有效率的。这是更清洁的版本不相同:
using (TareasContext db = new TareasContext())
{
var result = db.Tareas.Select(x => x.Tarea).ToList();
return result;
}
当我看到Tarea
列varchar
或nvarchar
类型。所以,你不需要它转换为字符串。