You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Entity Framework连接Access数据库并实现CRUD操作?

使用Entity Framework对接Access数据库指南

一、准备工作

根据你使用的EF版本安装对应依赖:

  • EF6:安装NuGet包 EntityFramework 和 System.Data.OleDb
  • EF Core:安装NuGet包 Microsoft.EntityFrameworkCore.OleDb

注意:Access数据库驱动分32位和64位,需确保项目平台目标(解决方案属性→生成→平台目标)与驱动位数一致,否则会出现连接失败。

二、配置连接字符串

根据Access数据库版本(.mdb/.accdb)配置连接字符串,放在App.config(EF6)或appsettings.json(EF Core)中:

1. EF6(App.config)

<connectionStrings>
  <!-- .accdb格式 -->
  <add name="AccessDbContext" 
       connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\YourPath\YourDatabase.accdb;" 
       providerName="System.Data.OleDb" />
  <!-- .mdb格式 -->
  <add name="AccessDbContext" 
       connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\YourPath\YourDatabase.mdb;" 
       providerName="System.Data.OleDb" />
</connectionStrings>

2. EF Core(appsettings.json)

"ConnectionStrings": {
  "AccessDbContext": "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\YourPath\\YourDatabase.accdb;"
}

三、生成实体类

1. 反向工程(自动生成)

EF6

打开Visual Studio→项目右键→添加→新建项→数据→ADO.NET实体数据模型→选择“来自数据库的EF设计器”→选择已配置的Access连接字符串→选择要生成实体的表→完成后自动生成实体类和DbContext。

EF Core

打开Package Manager Console,执行以下命令(替换路径和上下文名):

Scaffold-DbContext "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\YourPath\YourDatabase.accdb" Microsoft.EntityFrameworkCore.OleDb -Context AccessDbContext -OutputDir Models

该命令会自动生成实体类和DbContext到Models目录。

2. 手动创建实体类

如果不需要反向工程,可手动定义实体类,通过DataAnnotations或Fluent API配置映射:

// 示例实体类
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

// EF6 DbContext
public class AccessDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseOleDb(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\YourPath\YourDatabase.accdb;");
    }
}

// EF Core DbContext
public class AccessDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    public AccessDbContext(DbContextOptions<AccessDbContext> options) : base(options) { }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // 可选:Fluent API配置,比如指定表名
        modelBuilder.Entity<Product>().ToTable("Products");
    }
}

四、实现CRUD操作

1. 查询

using (var context = new AccessDbContext())
{
    // 查询所有产品
    var allProducts = context.Products.ToList();
    
    // 条件查询
    var expensiveProducts = context.Products.Where(p => p.Price > 50).ToList();
    
    // 单条查询
    var product = context.Products.Find(1);
}

2. 添加

using (var context = new AccessDbContext())
{
    var newProduct = new Product { Name = "New Product", Price = 29.99m };
    context.Products.Add(newProduct);
    context.SaveChanges();
}

3. 更新

using (var context = new AccessDbContext())
{
    var product = context.Products.Find(1);
    if (product != null)
    {
        product.Price = 39.99m;
        context.SaveChanges();
    }
}

4. 删除

using (var context = new AccessDbContext())
{
    var product = context.Products.Find(1);
    if (product != null)
    {
        context.Products.Remove(product);
        context.SaveChanges();
    }
}

内容的提问来源于stack exchange,提问作者Arian Amiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 11:27:23