【问题标题】:ASP.NET Core WebApi with SQL Server and EFCore 2带有 SQL Server 和 EF Core 2 的 ASP.NET Core Web Api
【发布时间】:2019-05-15 02:06:01
【问题描述】:

我正在尝试使用 SQL Server 和 Entity Framework Core 2 创建我的第一个 .NET Core Web Api,但是当我在项目构建时从浏览器调用端点时,我什么也得不到。它始终停留在显示“Hello World”的启动页面上。

如何正确地从 Rest Api 获取数据?

首先,我的模型类:

public class Project
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
}

DbContext:

public class TaskManagerDbContext : DbContext
{
    public TaskManagerDbContext(DbContextOptions<TaskManagerDbContext> options) : base(options) { }

    public DbSet<Project> Projects { get; set; }
}

然后我将两条记录硬编码到数据库中:

我通过使用基于实体框架的 R/W 构建 API 来生成 ProjectsControllerget 函数看起来像这样(我认为显示所有控制器是没有意义的,因为它是由脚手架生成的):

[Route("api/[controller]")]
[ApiController]
public class ProjectsController : ControllerBase
{
    private readonly TaskManagerDbContext _context;

    public ProjectsController(TaskManagerDbContext context)
    {
        _context = context;
    }

    // GET: api/Projects
    [HttpGet]
    public IEnumerable<Project> GetProjects()
    {
        return _context.Projects;
    }

    // GET: api/Projects/5
    [HttpGet("{id}")]
    public async Task<IActionResult> GetProject([FromRoute] int id)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var project = await _context.Projects.FindAsync(id);

        if (project == null)
        {
            return NotFound();
        }

        return Ok(project);
    }
}

最后,我的Startup.cs

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        services.AddDbContext<TaskManagerDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("Hello World!");
        });

        app.UseHttpsRedirection();
        app.UseMvc();
    }
}

问题是,需要什么更改才能通过 API 端点从我的数据库中获取数据?目前,当我尝试调用端点时,它始终停留在“hello world”页面上。

我的连接字符串在项目目录的appsettings.json文件中。

感谢您的建议!

【问题讨论】:

  • 谢谢,现在可以了!只要发布一个我会标记的答案

标签: c# .net-core entity-framework-core asp.net-core-webapi


【解决方案1】:

您从模板中留下了一些剩余部分,用于一个空的 asp 核心项目。

只需删除整个块,因为您不需要它:

app.Run(async (context) =>
{
    await context.Response.WriteAsync("Hello World!");
});

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2018-11-12
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多