📜  asp.net核心实体框架数据库先 - C#(1)

📅  最后修改于: 2023-12-03 14:39:23.046000             🧑  作者: Mango

ASP.NET Core实体框架数据库先 - C#

简介

ASP.NET Core实体框架(Database-First)是一个强大的工具,可以帮助程序员快速实现与数据库的交互。它是一种ORM(Object-Relational Mapping)技术,可以通过代码方式和数据库之间进行映射,使得开发者无需关心SQL语句的细节,就能够实现数据持久化。

Entity Framework核心

Entity Framework(Core)是.NET Core框架的一个重要组成部分,它是一个开放源代码的ORM框架,可以使用LINQ(Language-Integrated Query)查询技术轻松实现与数据库的交互。

主要特性
  • 自动跟踪实体状态变化
  • 支持多种数据库对象关系映射(ORM)策略
  • 支持代码优先或数据库优先开发
  • 支持复杂的查询语句
  • 支持延迟加载和即时加载
  • 具有优秀的数据访问性能
安装

在ASP.NET Core应用程序中安装Entity Framework(Core)主要有两种方式:NuGet包管理器和手动安装。

使用NuGet

在Visual Studio中,右键单击项目文件夹并选择“管理NuGet程序包”。在程序包管理器中,搜索EntityFramework.Core并安装。

手动安装

在程序中安装Entity Framework(Core)需要手动添加程序包引用。在项目中的“依赖关系”文件夹中,右键单击“NuGet程序包”并选择“管理NuGet程序包”。在程序包管理器中,搜索EntityFramework.Core并安装。

数据库先开发(Database-First)

ASP.NET Core实体框架提供了多种开发模式,其中最常见的是数据库先开发(Database-First)模式。在这个开发模式中,ASP.NET Core实体框架通过EDM(X)文件与数据库表进行映射。

  1. 创建ASP.NET Core MVC web应用程序
  2. 添加连接字符串
//在appsettings.json文件中添加
"ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=db_name;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
  1. 添加Entity Framework(Core)和Microsoft.EntityFrameworkCore.Tools包的引用
dotnet tool install --global dotnet-ef

在Nuget Package Manager控制台中输入:

install-package Microsoft.EntityFrameworkCore.SqlServer
install-package Microsoft.EntityFrameworkCore.Tools
  1. 通过自动代码生成工具创建实体类文件

在程序包管理器中输入以下命令:

Scaffold-DbContext "Your Connection String" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
  1. 创建控制器

在Visual Studio中右键单击Controllers文件夹,并选择“添加 -> 控制器 -> MVC控制器 - 空”

  1. 配置控制器

在控制器类中添加以下代码:

using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Threading.Tasks;

namespace YourNamespace.Controllers
{
    [Produces("application/json")]
    [Route("api/[controller]")]
    [ApiController]
    public class YourController : ControllerBase
    {
        private readonly YourDbContext _context;

        public YourController(YourDbContext context)
        {
            _context = context;
        }

        [HttpGet]
        public async Task<IActionResult> Get()
        {
            var result = await _context.YourEntity.ToListAsync();
            return Ok(result);
        }
        
        //...
    }
}

以上代码中,我们定义了一个Get方法,它是用来从数据库中获取YourEntity表中的所有数据。

  1. 配置启动文件

在Program.cs文件中添加以下代码:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureAppConfiguration((context, builder) =>
                {
                    builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
                       .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                       .AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", optional: true);
                })
                .Build();

以上代码中,我们启用了appsettings.json文件中的连接字符串。

  1. 运行应用程序

在浏览器中输入http://localhost:port/api/YourController,并确认是否能正确显示从数据库中读取到的数据。

结论

通过以上步骤,您已经成功学会了如何使用ASP.NET Core实体框架(Database-First)与数据库进行交互。[assembly: ]Markdown

参考资料
  • Entity Framework Core Documentation: https://docs.microsoft.com/en-us/ef/core/
  • Entity Framework Core Tutorial: https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=visual-studio
  • ASP.NET Core MVC Tutorial: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc?view=aspnetcore-5.0&tabs=visual-studio