.NET操作 Access (MSAccess)

注意:新项目推荐 Sqlite ,Access需要注意的东西太多了,比如OFFICE版本,是X86还是X64

连接字符串

Provider=Microsoft.ACE.OleDB.15.0;Data Source="+GetCurrentProjectPath+"\\test.accdb
//不同的office版本 连接字符串有差异

源码下载

image.png

下载: https://github.com/donet5/SqlSugar 

 注意:.NET CORE下要发布到X86文件夹下


NUGET安装

.NET Framework .NET CORE & .NET 5 & .NET 6 ....+

SqlSugar

SqlSugar.Access

SqlSugarCore

SqlSugar.AccessCore


代码

DbType=DbType.Access 
//不要使用Any Cpu Office安装的是X86就用X86 和office版本一样

 注意:.NET CORE下要发布到X86文件夹下


Access分页

Access在联表分页 如果存在OrderBy是不支持的

3种解决方案:

1、使用内存分页 .ToList().Skip(1).Take()

2、去掉OrderBy

3、使用子查询  (最新版版本才支持


三表以上的JOIN操作

默认Access只支持2个表的联表查询,我们可以通过嵌套查询实现3表查询

 var getAll = db.Queryable<Order>()
                .LeftJoin<Order>((x, y) => x.Id == y.Id)
                //可以这儿加Select
                .MergeTable()//通过mergetable合并成一个表在进行JOIN
                .LeftJoin<Order>((x, y) => x.Id == y.Id)
                .ToList();


裁剪发布后没有DLL

因为反射加载的SqlSugar.Access.dll 裁剪发布后可能不存在,需引用一下代码

public static Type Type = typeof(AccessProvider);//将这个代码随便扔在你的业务类中防止没有引用


关闭
文档:SqlSugar5.0