欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

程序员文章站 2022-09-28 08:14:13
一直想看看这部分内容,今天终于看到了。 vs2017调试通过。 记录如下: 1、添加需要的provider,有点添加驱动的意思。右击项目,NUGET “浏览”,“JetEntityFrameworkProvider”,安装,如图 完成后配置文件(控制台为app.config)中就会有这个驱动: 最好 ......

一直想看看这部分内容,今天终于看到了。

vs2017调试通过。

记录如下:

1、添加需要的provider,有点添加驱动的意思。右击项目,nuget

  EF框架访问access数据库入门(后附官方推荐“驱动”版本)

  “浏览”,“jetentityframeworkprovider”,安装,如图

  EF框架访问access数据库入门(后附官方推荐“驱动”版本)

  完成后配置文件(控制台为app.config)中就会有这个驱动:

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

最好把项目的生成属性调成“x86”,vs会警告你这个驱动是32位的。

2、在配置文件中给出数据库绝对路径:

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

建好库,表不用建

3、可以新建个模型文件夹(model),在其中添加一个实体数据模型,如图:

  EF框架访问access数据库入门(后附官方推荐“驱动”版本)

  下图这里我选的第三个(其他几个打算有空了再看看)

 EF框架访问access数据库入门(后附官方推荐“驱动”版本)

完成后有一个model1.cs,大致内容如下(1还是2不要纠结,2是后抓的图)

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

4、按需要修改model,我动的结果如下:

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

说明:t1表示表里的每条记录(编号姓名年龄),t1s表示那张叫“t1”的表,程序通过棕色“name....”的部分找到配置文件里的信息,根据驱动和文件路径对表进行操作,model1表示你的数据库。到此,你想做什么别的修改,都可以随心所欲了。

5、程序中使用ef框架编程,最简单的示例如下图:

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

提醒:别忘了using。firstordefault不会用的去学下集合的知识。对了,第一次运行会说数据库没数据。这时候表就给你建好了,你自己进去加点数据就好了。如下图:

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

_mig....那个图是vs自动加进去的,懒得管它。

运行结果:

EF框架访问access数据库入门(后附官方推荐“驱动”版本)

增删改查网上大把资料,此处略。

 


 官方推荐驱动(见https://docs.microsoft.com/zh-cn/ef/core/providers/)步骤如下:

1、通过nuget,安装“entityframeworkcore.jet”

2、新建数据模型“空code first”,添加三个引用,删除一个

using system.componentmodel.dataannotations;//为了后续说明主键[key]
using entityframeworkcore.jet;
using microsoft.entityframeworkcore;
//using system.data.entity;

  

3、修改模型文件:

删除默认构造函数的参数:

public model1()
: base()

  

在模型类中改写dbcontext中的配置方法

protected override void onconfiguring(dbcontextoptionsbuilder optionsbuilder)
{
optionsbuilder.usejet(@"provider=microsoft.ace.oledb.12.0;data source=c:\xxx\consoleapp1\data\d1.accdb;");
}

  

描述表结构,用[key]说明主key

public class t2
{
[key]
public int xh { get; set; }
public string name1 { get; set; }
}

  

4、创建对应的空数据库表(仅结构,表中未设置key)
5、主程序:

model1 m1 = new model1();
var t = new t2();
t.xh = 2;
t.name1 = "张三";
m1.t2s.add(t);
m1.savechanges();
foreach (var item in m1.t2s)
{
console.writeline(item.name1);
}
console.readkey();

  

6、注意程序生成为x86(跟access驱动一样)