跟着AI学习C#之项目实战-电商平台 Day1
本文详细介绍了ASP.NET Core电商平台项目的第一天开发流程。首先创建项目结构并集成Entity Framework Core,随后定义Product和Category核心模型,配置数据库上下文与迁移。通过种子数据初始化示例商品和分类信息,确保开发环境具备基础数据。文章包含从项目创建、EF Core配置、模型定义到数据库迁移的具体代码实现,为后续功能开发奠定基础。关键步骤包括DbContex
📅 Day 1:项目初始化与基础模型搭建
今天是项目的第一天,我们将创建项目的结构,并为数据库上下文和迁移做好准备。同时,我们还会实现 Product 和 Category 模型,并使用种子数据初始化部分商品信息。
🎯 目标:
- 创建项目结构:使用 ASP.NET Core 创建一个新的 Web 应用程序。
- 添加数据库上下文和迁移:配置 Entity Framework Core 来管理我们的数据库。
- 实现
Product和Category模型:定义电商系统中的核心实体。 - 使用种子数据初始化部分商品信息:确保应用程序启动时有一些示例数据可用。
步骤 1:创建新的 ASP.NET Core 项目
首先,打开 Visual Studio 或 VS Code 并创建一个新的 ASP.NET Core Web 应用程序项目(如果使用命令行工具,则可以运行以下命令):
dotnet new webapp -o ECommercePlatform
这将生成一个名为 ECommercePlatform 的新项目。
步骤 2:添加 Entity Framework Core 包
在项目中集成 Entity Framework Core,以便我们可以使用它来管理数据库。打开终端并运行以下命令来安装所需的 NuGet 包:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
如果你希望支持 SQLite 数据库,也可以选择安装相应的包:
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
步骤 3:配置数据库上下文
接下来,在 Data 文件夹下创建一个名为 ApplicationDbContext.cs 的文件,并编写如下代码:
using Microsoft.EntityFrameworkCore;
namespace ECommercePlatform.Data
{
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
// 定义 DbSets (表)
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
}
步骤 4:定义 Product 和 Category 模型
在 Models 文件夹中创建两个类文件:Product.cs 和 Category.cs,并分别为它们定义属性。
Product.cs:
namespace ECommercePlatform.Models
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
}
Category.cs:
namespace ECommercePlatform.Models
{
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Product> Products { get; set; }
}
}
步骤 5:配置 Startup.cs / Program.cs
根据你使用的 ASP.NET Core 版本(3.x 或更高版本),你需要在 Startup.cs 或 Program.cs 中注册数据库上下文和服务。
对于 .NET 6 及以上版本(Program.cs 示例):
var builder = WebApplication.CreateBuilder(args);
// 添加服务到容器。
builder.Services.AddRazorPages();
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
// 配置 HTTP 请求管道。
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
请确保在 appsettings.json 中正确设置了数据库连接字符串:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ECommercePlatformDb;Trusted_Connection=True;"
},
...
}
步骤 6:创建初始迁移
现在,让我们为我们的模型创建第一个迁移。在终端中运行以下命令:
dotnet ef migrations add InitialCreate
dotnet ef database update
这些命令会创建必要的数据库架构并将它们应用到数据库中。
步骤 7:添加种子数据
为了使开发更加方便,我们可以向数据库添加一些初始数据。可以在 ApplicationDbContext 类中添加一个方法来处理种子数据:
public static void Initialize(IServiceProvider serviceProvider)
{
using var context = new ApplicationDbContext(
serviceProvider.GetRequiredService<DbContextOptions<ApplicationDbContext>>());
if (context.Database.EnsureCreated())
{
if (!context.Categories.Any())
{
context.Categories.AddRange(
new Category { Name = "Electronics" },
new Category { Name = "Books" },
new Category { Name = "Clothing" }
);
context.SaveChanges();
}
if (!context.Products.Any())
{
context.Products.AddRange(
new Product { Name = "Laptop", Description = "High-performance laptop.", Price = 999.99M, CategoryId = 1 },
new Product { Name = "Novel", Description = "A gripping novel.", Price = 19.99M, CategoryId = 2 },
new Product { Name = "T-Shirt", Description = "Comfortable cotton t-shirt.", Price = 9.99M, CategoryId = 3 }
);
context.SaveChanges();
}
}
}
然后在 Program.cs 中调用此方法以确保在应用程序启动时填充数据库:
var scopeFactory = app.Services.GetService<IServiceScopeFactory>();
using (var scope = scopeFactory.CreateScope())
{
var services = scope.ServiceProvider;
var context = services.GetRequiredService<ApplicationDbContext>();
context.Initialize(services);
}
恭喜!第一天的任务已经完成。你现在有了一个基本的 ASP.NET Core 项目框架,并且已经配置好了数据库上下文、模型以及一些初始数据。明天我们将继续构建商品展示页面。
更多推荐

所有评论(0)