EF Core 模型优先——根据类对象创建数据表

需要的nuget包

  •   Microsoft.EntityframeworkCore.SqlServer  (根据自己的数据库类型选择对应的nuget包)
  •   Microsoft.EntityframeworkCore.Tools
  •   Microsoft.VisualStudio.Web.CodeGeneration.Design

说明:

(1)本文测试使用的数据库是SqlServer2017; 

(2)如果没有Microsoft.EntityFrameworkCore.Design,在PM上执行命令会失败(如下图)
PM> add-migration initicial
Build started...
Build succeeded.
Your startup project 'CoreDemo' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

两个类:Grade(年级)、Student(学生)

一个枚举:Gender(性别)

    /// &l
### ASP.NET Core.NET 8.0 中使用 MVC 和 EF Core 进行数据访问 #### 一、概述 ASP.NET Core 是一种跨平台框架,用于构建现代 Web 应用程序和服务。随着即将发布的 .NET 8.0,其性能得到了显著提升,特别是在引入 native AOT 技术后[^2]。Entity Framework (EF) Core 是一个轻量级且可扩展的对象关系映射器(ORM),它允许开发者通过 C# 对象模型来管理数据库中的数据。 以下是关于如何在 ASP.NET Core.NET 8.0 中集成 MVC 架构以及使用 EF Core 实现数据访问的具体方法: --- #### 二、环境准备 1. **安装必要的工具和依赖项** - 安装最新版的 [.NET SDK](https://dotnet.microsoft.com/download),确保支持 .NET 8.0。 - 如果计划连接到 MySQL 数据库,则需安装 `Pomelo.EntityFrameworkCore.MySql` NuGet 包[^3]。 2. **创建项目** 使用命令行或 Visual Studio 创建一个新的 ASP.NET Core MVC 项目: ```bash dotnet new mvc --name MyMvcEfApp cd MyMvcEfApp ``` 3. **配置数据库上下文** 在项目的 `Models` 文件夹下定义实体类,并设置 DbContext 类以示数据库结构。 --- #### 三、实现步骤 ##### 1. 添加实体类 假设我们有一个简单的 `Product` ,可以定义如下实体类: ```csharp public class Product { public int Id { get; set; } public string Name { get; set; } = null!; public decimal Price { get; set; } } ``` ##### 2. 配置 DbContext 创建一个继承自 `Microsoft.EntityFrameworkCore.DbContext` 的类,用于管理实体对象与数据库之间的交互: ```csharp using Microsoft.EntityFrameworkCore; public class ApplicationDbContext : DbContext { public DbSet<Product> Products { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql( "server=localhost;database=mydb;uid=root;pwd=password;", ServerVersion.AutoDetect("server=localhost;database=mydb;uid=root;pwd=password;") ); } } ``` 注意:这里使用的字符串是针对 MySQL 数据库的连接字符串。 ##### 3. 注册服务 修改 `Program.cs` 或 `Startup.cs` 文件,注册 `ApplicationDbContext` 到依赖注入容器中: ```csharp builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")))); ``` ##### 4. 控制器操作 创建控制器并编写 CRUD 方法。例如,展示产品列的方法可能如下所示: ```csharp public class ProductsController : Controller { private readonly ApplicationDbContext _context; public ProductsController(ApplicationDbContext context) { _context = context; } public async Task<IActionResult> Index() { var products = await _context.Products.ToListAsync(); return View(products); } } ``` ##### 5. 视图设计 为控制器的操作方法生成对应的视图文件,通常可以通过 Scaffold 功能快速完成。 --- #### 四、高级功能 除了基本的数据访问外,还可以探索以下特性: - **原生 SQL 查询** 当 LINQ 不足以满足复杂查询需求时,可以直接执行原始 SQL: ```csharp var result = _context.Products.FromSqlRaw("SELECT * FROM Products WHERE Price > {0}", 10).ToList(); ``` - **事务处理** 确保多个操作作为一个整体成功或失败: ```csharp using (var transaction = _context.Database.BeginTransaction()) { try { // 执行一系列更新/插入操作... _context.SaveChanges(); transaction.Commit(); } catch { transaction.Rollback(); throw; } } ``` - **异步编程** 推荐始终采用异步方式调用数据库操作以提高应用响应能力[^1]。 --- #### 五、总结 本文介绍了如何利用 ASP.NET Core MVC 结合 EF Core 来开发具备高效数据访问能力的应用程序。借助于最新的 .NET 8.0 版本及其优化后的运行时现,能够进一步增强系统的吞吐率和稳定性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值