Entity Framework Core和MS Access

6
我正在尝试使用JetEntityFrameworkProvider从WPF MVVM应用程序访问Access数据库,但无法使其工作。我已创建了模型,使用Add-Migration创建了迁移,但运行Update-Database时,命令永远不会完成。它确实创建了数据库,但唯一的表是MSysAccessStorage。文档的一部分说:

为了使提供程序正常工作,管理员应该可以访问表MSysRelationships

并进一步说明:

这是默认配置,因此无需更改。自2003年以来,Access具有可见的系统表,因此无需分配权限。必须通过设置正确的双重表(在您的代码早期)来进行配置。

JetConnection.DUAL = JetConnection.DUALForAccdb;

我已经尝试添加这个,但我不知道“非常早期的代码”是什么意思。我已将其添加到我的App.xaml.cs的顶部和我的数据库上下文中,但都没有起作用。当我添加它时,我会收到以下错误信息:
“DUAL名称在当前上下文中不存在。JetConnection.DUALForAccdb名称在当前上下文中不存在。”
这是我的上下文中的OnConfiguring函数。
protected override void OnConfiguring( DbContextOptionsBuilder optionsBuilder )
{
    optionsBuilder.UseJet( @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\<User>\Desktop\New Folder\Staff.accdb;" );
}

我做错了什么?


1
为什么不直接安装SQL Server呢?开发者版是免费的。如果你计划开发除了快速家庭测试之外的任何东西,那么Access将会缺乏功能。最好从一开始就学习使用适当的工具。 - Liam
1个回答

4

JetEntityFramework提供程序与EF Core不兼容。

如果您想使用EF Core,请改用EntityFrameworkCore.Jet(由JetEntityFramework的相同作者编写,但不隶属于JetEntityFramework),或者如果您想使用JetEntityFramework,请使用EF 6。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接