ASP.NET WebAPI连接数据库的方法

ASP.NET WebAPI是一种创建 Web服务的框架,通过它可以轻松地创建RESTful API并支持传输多种数据格式。连接数据库是开发WebAPI的重要一步,下面将详细讲解ASP.NET WebAPI连接数据库的方法。

1.创建数据库

使用ASP.NET WebAPI连接数据库,首先需要创建一个数据库。可以使用SQL Server Management Studio(SSMS)等工具创建一个数据库,并在其中添加表来存储数据。下面是一个创建数据库的示例:

CREATE DATABASE WebApiDemo
USE WebApiDemo
GO

CREATE TABLE Users (
    UserId INT IDENTITY(1,1) PRIMARY KEY,
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(50) NOT NULL
)

上面的示例创建了一个名为WebApiDemo的数据库,并在其中创建了一个名为Users的表,表中包含UserId、FirstName、LastName和Email列。

2.安装Entity Framework

ASP.NET WebAPI应用程序需要使用Entity Framework来管理数据库。可以通过NuGet控制台来安装Entity Framework:

Install-Package EntityFramework

3.创建数据模型

在WebAPI应用程序中,需要使用数据模型类来定义数据库表对应的实体类。创建一个名为User的数据模型类,可以使用以下代码:

public class User
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
}

4.配置数据连接

在WebAPI应用程序中配置数据库连接时,需要在Web.config文件中定义连接字符串。以下是一个连接到本地SQL Server Express实例的示例:

<connectionStrings>
  <add name="WebApiDemoContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=WebApiDemo;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

5.创建数据上下文

数据上下文表示应用程序和数据库之间的连接,是管理数据库的关键。创建名为WebApiDemoContext的数据上下文,可以使用以下代码:

public class WebApiDemoContext : DbContext
{
    public WebApiDemoContext() : base("WebApiDemoContext")
    {
    }

    public DbSet<User> Users { get; set; }
}

6.创建数据访问服务

创建数据访问服务来与WebAPI控制器交互。以下是一个使用数据上下文从数据库中获取用户数据的示例:

public class UserService
{
    private WebApiDemoContext db;

    public UserService()
    {
        db = new WebApiDemoContext();
    }

    public List<User> GetAllUsers()
    {
        return db.Users.ToList();
    }

    public User GetUserById(int userId)
    {
        return db.Users.Find(userId);
    }

    public void AddUser(User user)
    {
        db.Users.Add(user);
        db.SaveChanges();
    }

    public void UpdateUser(User user)
    {
        db.Entry(user).State = EntityState.Modified;
        db.SaveChanges();
    }

    public void DeleteUser(int userId)
    {
        User user = db.Users.Find(userId);
        db.Users.Remove(user);
        db.SaveChanges();
    }
}

7.创建WebAPI控制器

使用上面创建的数据访问服务在WebAPI控制器中实现对用户数据的操作。这是一个包含五个动作的控制器,可用于获取、添加、更新和删除用户:

public class UsersController : ApiController
{
    private UserService userService;

    public UsersController()
    {
        userService = new UserService();
    }

    // GET api/users
    public IEnumerable<User> Get()
    {
        return userService.GetAllUsers();
    }

    // GET api/users/5
    public User Get(int id)
    {
        return userService.GetUserById(id);
    }

    // POST api/users
    public void Post([FromBody]User user)
    {
        userService.AddUser(user);
    }

    // PUT api/users/5
    public void Put(int id, [FromBody]User user)
    {
        userService.UpdateUser(user);
    }

    // DELETE api/users/5
    public void Delete(int id)
    {
        userService.DeleteUser(id);
    }
}

示例1

以下是一个使用上述步骤创建的WebAPI控制器的Postman示例:

要添加一个新用户,请使用以下HTTP POST请求:http://localhost:port/api/users,请求主体是一个包含用户信息的JSON对象:

{
  "FirstName": "John",
  "LastName": "Doe",
  "Email": "john.doe@example.com"
}

示例2

以下是一个使用上述步骤创建的WebAPI控制器的C#客户端示例:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;

namespace WebApiDemoClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // HTTP GET
            GetUsers();

            // HTTP POST
            CreateUser(new User { FirstName = "Alice", LastName = "Jones", Email = "alice.jones@example.com" });

            // HTTP PUT
            UpdateUser(new User { UserId = 1, FirstName = "Bob", LastName = "Smith", Email = "bob.smith@example.com" });

            // HTTP DELETE
            DeleteUser(2);
        }

        static async void GetUsers()
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:port");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.GetAsync("api/users");
                if (response.IsSuccessStatusCode)
                {
                    List<User> users = await response.Content.ReadAsAsync<List<User>>();
                    foreach (User user in users)
                    {
                        Console.WriteLine($"{user.FirstName} {user.LastName} ({user.Email})");
                    }
                }
            }
        }

        static async void CreateUser(User user)
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:port");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.PostAsJsonAsync("api/users", user);
                response.EnsureSuccessStatusCode();
            }
        }

        static async void UpdateUser(User user)
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:port");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.PutAsJsonAsync($"api/users/{user.UserId}", user);
                response.EnsureSuccessStatusCode();
            }
        }

        static async void DeleteUser(int userId)
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri("http://localhost:port");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpResponseMessage response = await client.DeleteAsync($"api/users/{userId}");
                response.EnsureSuccessStatusCode();
            }
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET WebAPI连接数据库的方法 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 云计算投入成本分析

    中国互联网络信息中心分析师 王常青     对于对云计算感兴趣的中小企业来说,首先需要考虑的问题是,采用云计算模式建立企业数据中心,需要多少投入,是否能有、以及能有多少费用上的节省?本文将分析中小企业在考虑云计算时,经济上的利弊得失。    以目前情况而言,我国中小企业可以选择建立自己的数据中心,或者采用租用云服务方式建立数据中心。我们假定一家互联网公司Mi…

    云计算 2023年4月12日
    00
  • TPT是什么币种?TPT币前景深度分析

    TPT是什么币种? TPT(TokenPocket Token)是TokenPocket钱包的原生代币,是基于EOS公链发行的通证,也是全球范围内用户最多的去中心化钱包之一。其代币总量为20亿枚,其中70%的代币分发给社区(其中60%分配到TokenPocket生态基金里,用于推动生态建设,另外10%分配到社区使用)。 TPT币的用途 TPT币有如下用途: …

    云计算 2023年5月17日
    00
  • 云计算与虚拟化KVM深度实践

    徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。个人博客”徐亮伟架构师之路”累计受益数万人。笔者Q:552408925、572891887架构师群:471443208 该博客文章同步视频在51cto上线了,想详细了解的朋友可以点击下方视频链接地址[51c…

    云计算 2023年4月12日
    00
  • JS中的算法与数据结构之常见排序(Sort)算法详解

    JS中的算法与数据结构之常见排序(Sort)算法详解 本文将介绍JS中的算法与数据结构之常见排序(Sort)算法详解,包括排序算法的分类、原理、时间复杂度、代码实现和示例说明等。 1. 排序算法的分类 排序算法可以分为以下几类: 冒泡排序(Bubble Sort) 选择排序(Selection Sort) 插入排序(Insertion Sort) 希尔排序(…

    云计算 2023年5月16日
    00
  • 最佳案例 | 游戏知几 AI 助手的云原生容器化之路

    作者 张路,运营开发专家工程师,现负责游戏知几 AI 助手后台架构设计和优化工作。 游戏知几 随着业务不断的拓展,游戏知几AI智能问答机器人业务已经覆盖了自研游戏、二方、海外的多款游戏。游戏知几研发团队主动拥抱云原生,推动后台业务全量上云,服务累计核心1w+。 通过云上的容器化部署、自动扩缩容、健康检查、可观测性等手段,提高了知几项目的持续交付能力和稳定性,…

    2023年4月9日
    00
  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定

    下面是关于“详解ASP.NET MVC 常用扩展点:过滤器、模型绑定”的完整攻略,包含两个示例说明。 简介 ASP.NET MVC是一种基于模型-视图-控制器(MVC)模式的Web应用程序框架。在ASP.NET MVC中,过滤器和模型绑定是常用的扩展点。本文将详细讲解过滤器和模型绑定的概念、用法和示例。 过滤器 过滤器是ASP.NET MVC中的一种扩展点,…

    云计算 2023年5月16日
    00
  • .NetCore使用过滤器实现登录权限认证的方法小结

    下面是关于“.NetCore使用过滤器实现登录权限认证的方法小结”的完整攻略,包含两个示例说明。 简介 在.NetCore中,可以使用过滤器来实现登录权限认证。过滤器是一种在请求管道中执行的组件,它可以在请求到达控制器之前或之后执行某些操作。在本攻略中,我们将介绍如何使用过滤器来实现登录权限认证。 步骤 在.NetCore中使用过滤器实现登录权限认证时,我们…

    云计算 2023年5月16日
    00
  • 详解Openstack组件部署 — Overview和前期环境准备

    详解Openstack组件部署 — Overview和前期环境准备 Openstack是一个开源的云计算平台,可以用于构建私有云、公有云和混合云等多种云计算环境。本文将介绍Openstack组件部署的概述和前期环境准备的方法,并提供两个示例说明。 1. Overview Openstack由多个组件组成,包括计算、存储、网络、身份认证等组件。在部署Opens…

    云计算 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部