Asp.net mvc 需要帮助概念化Web API和MVC 5解决方案吗

Asp.net mvc 需要帮助概念化Web API和MVC 5解决方案吗,asp.net-mvc,asp.net-web-api2,crud,Asp.net Mvc,Asp.net Web Api2,Crud,我的任务是编写一个API,将新用户发布到现有数据库。我已经在主MVC项目中创建了一个单独的WebAPI2项目(带有MVC) 因为我使用的是现有数据库,所以在API项目中,我使用ADO.NET实体数据模型(Entity framework)数据库优先方法来生成一个包含各种模型类文件的.edmx文件 我还想在创建控制器时使用控制器支架选项,根据我的模型自动创建视图和CRUD操作。但是,edmx生成的模型未出现在控制器配置中: 最后,我不知道如何连接WebAPI项目和主MVC项目,以便从主项目调用AP

我的任务是编写一个API,将新用户发布到现有数据库。我已经在主MVC项目中创建了一个单独的WebAPI2项目(带有MVC)

因为我使用的是现有数据库,所以在API项目中,我使用ADO.NET实体数据模型(Entity framework)数据库优先方法来生成一个包含各种模型类文件的.edmx文件

我还想在创建控制器时使用控制器支架选项,根据我的模型自动创建视图和CRUD操作。但是,edmx生成的模型未出现在控制器配置中:

最后,我不知道如何连接WebAPI项目和主MVC项目,以便从主项目调用API


我假设我需要在使用HttpClient包的主MVC项目中创建一个控制器。不过,我相信这并不是那么简单。

这确实是两个独立的问题,但我将对这两个问题进行破解

要在定义实体框架上下文的不同项目中使用生成的类,请执行以下操作,。您需要使用normal从web项目引用API项目。它们还需要公开,幸运的是这是默认设置

如何在运行时访问API完全取决于您的设计。如果它是一个前端api,设计用于从浏览器调用,那么可以使用JavaScript中的XMLHTTPRequest或$.ajax()进行ajax调用。如果它是一个后端API,设计用于由服务器端代码调用,请使用。注意文件中的说明:

HttpClient旨在实例化一次,并在应用程序的整个生命周期中重用

using (var client = new HttpClient())
{
  client.BaseAddress = new Uri("http://localhost:12345/api/");
  //HTTP Requests
}

换句话说,不要为每个请求实例化一个HttpClient,创建一个并共享它,它是为重用而设计的。

您可以直接在mvc应用程序中将API与http客户端一起使用,并使用它们的名称

using (var client = new HttpClient())
{
  client.BaseAddress = new Uri("http://localhost:12345/api/");
  //HTTP Requests
}