ASP.NET Core可以通过EF SQLite对SQLite数据库进行增删改查的操作。下面是详细的攻略:
1. 创建ASP.NET Core Web应用程序
首先,我们需要在Visual Studio中创建一个ASP.NET Core Web应用程序。在创建项目的过程中,请选择ASP.NET Core Web应用程序模板,并选择Web应用程序的选项。
2. 安装EF SQLite NuGet包
在创建完项目之后,我们需要安装EF SQLite NuGet包,以便在项目中使用EF SQLite。在NuGet包管理器中搜索“Microsoft.EntityFrameworkCore.Sqlite”,并安装最新版本。
3. 创建SQLite数据库
使用SQLite与EF Core进行数据库交互,需要有SQLite数据库。我们可以使用SQLite官网上的SQLite Studio工具来创建一个新的SQLite数据库。
4. 配置EF Core
在项目中创建名为“DataContext”的新类,在其中定义SQLite数据库的上下文。我们还需要在这个类中添加DbSet以访问数据库中的数据。
using Microsoft.EntityFrameworkCore;
using System;
namespace ASPCoreSQLiteDemo.Models
{
public class DataContext: DbContext
{
private readonly string _connectionString;
public DataContext(string connectionString)
=> _connectionString = connectionString;
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite(_connectionString);
public DbSet<Employee> Employees { get; set; }
}
}
5. 创建数据模型
在项目中创建一个名为“Employee”的新类,以表示表中的记录。我们还需要使用注释来指定表名和每个属性的名称。
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ASPCoreSQLiteDemo.Models
{
[Table("Employees")]
public class Employee
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column("id")]
public int Id { get; set; }
[Column("name")]
public string Name { get; set; }
[Column("email")]
public string Email { get; set; }
[Column("phone")]
public string Phone { get; set; }
[Column("address")]
public string Address { get; set; }
}
}
6. 进行CRUD(增删改查)操作
在项目中创建一个名为“EmployeeRepository”的新类,以处理数据访问。我们需要在这个类中添加方法进行CRUD操作。
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
namespace ASPCoreSQLiteDemo.Models
{
public class EmployeeRepository : IEmployeeRepository
{
private readonly DataContext _context;
public EmployeeRepository(DataContext context)
=> _context = context;
public Employee Add(Employee employee)
{
_context.Employees.Add(employee);
_context.SaveChanges();
return employee;
}
public Employee Get(int id)
=> _context.Employees.FirstOrDefault(e => e.Id == id);
public IEnumerable<Employee> GetAll()
=> _context.Employees.ToList();
public Employee Update(Employee employee)
{
_context.Entry(employee).State = EntityState.Modified;
_context.SaveChanges();
return employee;
}
public Employee Delete(int id)
{
var employee = Get(id);
if (employee != null)
{
_context.Employees.Remove(employee);
_context.SaveChanges();
}
return employee;
}
}
}
7. 注册服务
在Startup.cs文件中,在ConfigureServices()方法中注册服务。
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<IEmployeeRepository, EmployeeRepository>();
// ...
}
8. 使用示例
在一个控制器方法中,我们可以注入EmployeeRepository并使用其方法进行CRUD操作。
using ASPCoreSQLiteDemo.Models;
using Microsoft.AspNetCore.Mvc;
public class EmployeeController : Controller
{
private readonly IEmployeeRepository _employeeRepository;
public EmployeeController(IEmployeeRepository employeeRepository)
=> _employeeRepository = employeeRepository;
public IActionResult Index()
{
var employees = _employeeRepository.GetAll();
return View(employees);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
public IActionResult Create(Employee employee)
{
if (ModelState.IsValid)
{
_employeeRepository.Add(employee);
return RedirectToAction(nameof(Index));
}
return View(employee);
}
public IActionResult Edit(int id)
{
var employee = _employeeRepository.Get(id);
if (employee == null)
{
return NotFound();
}
return View(employee);
}
[HttpPost]
public IActionResult Edit(Employee employee)
{
if (ModelState.IsValid)
{
_employeeRepository.Update(employee);
return RedirectToAction(nameof(Index));
}
return View(employee);
}
[HttpPost]
public IActionResult Delete(int id)
{
var employee = _employeeRepository.Delete(id);
if (employee == null)
{
return NotFound();
}
return RedirectToAction(nameof(Index));
}
public IActionResult Details(int id)
{
var employee = _employeeRepository.Get(id);
if (employee == null)
{
return NotFound();
}
return View(employee);
}
}
以上就是使用EF SQLite对SQLite数据库进行CRUD操作的完整攻略。其中示例包括创建SQLite数据库、使用EF Core访问SQLite数据库、进行CRUD操作的示例。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core使用EF SQLite对数据库增删改查 - Python技术站