asp.net 5 MVC 6 Web API 访问现有数据库

本文关键字:访问 数据库 API Web net MVC asp | 更新日期: 2023-09-27 18:34:29

我正在开发我的第一个 web api,我完成了本教程并在很大程度上遵循了它。 但是,我需要构建的 Web API 必须连接到现有的 sql 服务器数据库。 是否有人有将 Web API 连接到从 MVC6 中的外部应用程序创建和维护的现有数据库的示例?

Web API 是否与 MVC 网站一样使用数据库上下文? 如何在启动时配置服务中添加现有数据库?

如果在配置服务中添加 EF,EF 不会尝试在我的模型中首先使用代码搭建数据库基架吗?

更新:在 Oleg 的评论和下面的答案之后,我发现 web api 确实以相同的方式连接到数据库,因此通过 mvc 6 上的教程添加现有数据库很有帮助,再加上 Oleg 发表的评论。

我缺少的关键项目如下:

  1. 你确实需要添加一个 dbContext,我没有搭建它。
  2. 可以在启动配置服务中使用实体框架。

    服务业。AddEntityFramework(( .AddSqlServer(( .AddDbContext(options => 选项。UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]((;

像这样有一个空的DBContext是否有效?

public class ApiDbContext : DbContext
{
}

它似乎运行并返回查询结果,所以我猜是这样,但是用 EF 将其脚手架架更好吗?

asp.net 5 MVC 6 Web API 访问现有数据库

Web API 是否与 MVC 网站一样使用数据库上下文?

在 ASP.NET 核心中,"Web API"和"MVC"之间不再有区别。两者都由MVC控制器处理,API和网站之间的唯一区别是网站返回View()调用,而API返回其他内容(例如Json()调用,甚至只是一个普通对象,然后自动序列化(。

如何在启动时配置服务中添加现有数据库?

为了使用现有数据库,您仍然需要为其设置数据库上下文。只是不是使用 EF 创建数据库,而是在那里拥有它。可以使用 dnx ef dbcontext scaffold 命令从现有数据库搭建数据库上下文和模型类型的基架(还需要在其中传入连接字符串(,也可以从空数据库上下文开始,然后从头开始手动创建它。

但是对于使用 EF,数据库是否由 EF 创建并不重要。需要设置正确的模型和映射,然后决定是否使用 EF 命令创建数据库。您确实也获得了对数据库迁移的支持(您可以以某种方式与现有数据库一起使用(,但是如果您不需要它们,您仍然不必使用它们。

如果在配置服务中添加 EF,EF 不会尝试在我的模型中首先使用代码搭建数据库基架吗?

如果删除 ASP.NET Core 的某些标准项目模板中存在的Database.Migrate()调用(在 Startup.Configure 方法中(,则 EF 不会执行任何操作。您可以完全控制执行基架或迁移的位置和时间。