问题标签 [jet-ef-provider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
456 浏览

c# - 在 Visual Studio 2019 for C# 上安装 JetEntityFrameWorkProvider

我想在 Visual Studio 下用 C# 开发一个应用程序,并假装使用带有两个 Access DB(带有 accdb 扩展名)的实体框架。我找到了由 Umberto Ballestrazzi(别名 Bubi)开发的 JetEntityFrameworkProvider 项目,我看到了解释在 Visual Studio 上工作的所有过程的视频,但我不明白。其中一个步骤需要下载和编译项目,但编译前和编译后命令失败并显示以下消息:

错误命令“调用“D:\Microsoft Visual Studio\2019\Community\Common7\IDE..\Tools\vsvars32.bat”gacutil /u JetEntityFrameworkProvider.dll”退出,代码为 9009。项目:JetDdexProvider。

错误命令 ""%ProgramFiles%\Microsoft SDKs\Windows\v8.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /u "JetEntityFrameworkProvider"" exited with code 3. 项目:JetEntityFrameworkProvider。

按照视频指示,我下载了 JetEntityFrameWorkProvider 和 DDEX-Deserialiser Nugets。我已经手动添加了 machine.config 条目,我已经将 vsvars32.bat 更改为 vsdevcmd.bat,正如其他一些线程所建议的那样,我没有取得进展。

我怎样才能使用它来创建和使用 Access Provider 的 EDMX 图?我可以将它与 Access 版本 2007 或 2010、MDB 和 ACCDB 一起使用吗?

需要注意的事项:

  • 我想与 Visual Studio 2019 一起使用,我在 Visual Studio Community 2017 或更早版本中找到的所有解决方案,如果没有其他方法可以降级到 2017,如果这可以解决问题,但我更喜欢使用 2019。

  • 我已经下载了 JetEntityFrameWorkProvider 版本 6.2.0-rc1 和 DDEX-Deserialiser 版本 3.7.0 Nugets。

  • 我已按照 Bubi 发布的此链接的指示来解释该过程:https ://www.youtube.com/watch?v=XHrpY_nMXrk

提前感谢您的时间和帮助。

0 投票
0 回答
114 浏览

c# - 对 JetEntityFrameworkProvider 执行 CRUD 操作

问题。
如何对 JetEntityFrameworkProvider 执行 CRUD 操作?

描述。
我想应用实体框架与 MS Access 一起工作。
我正在使用:JetEntityFrameworkProvider。
我创建了一个项目。
我正在调试。
结果:错误:“表 'Planet2' 已存在。”。

桌子。 ____ 在此处输入图像描述

项目。
____

上下文数据库.cs

行星2.cs

程序.cs

应用程序配置

0 投票
2 回答
438 浏览

c# - 脚手架现有的本地 MS 访问通过 .NET 框架:System.TypeLoadException:EntityFrameworkCore.Jet 中的方法“创建”未实现

我想在主页上表示现有本地 Access DB 的数据。为此,我将 ASP.NET MVC 与 Framework 4.7.2 一起使用。我必须使用EntityFrameworkCore.Jet,所以我不能使用Core。安装了以下软件包:

  • Microsoft.EntityFrameworkCore.Design
  • Microsoft.EntityFrameworkCore.Tools
  • EntityFrameworkCore.Jet

所以我尝试在 Package-Manager-Console 中搭建我的数据库:

但它会抛出一个错误:

System.TypeLoadException:程序集“EntityFrameworkCore.Jet,Version = 2.2.0.0,Culture = Neutral,PublicKeyToken = adb9793829ddae60”的类型“EntityFrameworkCore.Jet.Scaffolding.Internal.JetDatabaseModelFactory”中的方法“Create”没有实现。

我找不到它找不到程序集的原因。你有什么想法,为什么它不起作用?

0 投票
0 回答
188 浏览

c# - 具有不变名称“JetEntityFrameworkProvider”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册

我想将我的主页连接到 Access-DB。为此,我使用:

  • .NET 框架 4.72 API
  • EntityFrameworkProvider.Jet

当我尝试运行它时,我收到以下消息

System.ArgumentException:具有不变名称“JetEntityFrameworkProvider”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册,或者无法加载。Zeile 24: var result = from Daten_ALT in context.Sammlung Zeile 25: select Daten_ALT;

我的 homecontroller.cs 中的这个片段看起来像这样:

我的 ContextDB.cs:

我的 packages.config (减少到重要部分):

和 web.config (减少到重要部分):

如你所见,commets 是我试图解决它的方法。但这没有帮助。你有什么建议吗?是因为Linq吗?

0 投票
1 回答
963 浏览

c# - EntityFrameworkCore.Jet 在尝试连接到 MS Access DB 时返回错误

我是 Entity Framework 的新手,今天我正在尝试开发一个简单的 C# 脚本,它将使用 Entity Framework Core Jet 来列出本地 MS Access DB 中指定的所有公司。

但是,我在“OnConfiguring”函数中不断收到错误消息,它说:

System.TypeLoadException:来自程序集“EntityFrameworkCore.Jet,版本=2.2.0.0,文化=中性,PublicKeyToken=adb9793829ddae60”的“EntityFrameworkCore.Jet.Infrastructure.Internal.JetOptionsExtension”类型中的“方法“get_Info”没有实现。

请注意,我正在开发的 C# 控制台应用程序是在 .NET 框架 4.7.2 中开发的。我也尝试使用 .NET Core 3、.NET Core 2.1 等开发相同的脚本,但所有这些都有相同的结果。

我在下面提供了有关数据库的所有信息以及我迄今为止编写的代码。

数据库设计

数据库仅包含一个名为“Companies”的表,其中包含以下字段:

  • ID(自动编号,主键)
  • 公司名称(短文本)

数据上下文.cs

程序.cs

谢谢!

0 投票
3 回答
209 浏览

c# - Access 数据库无法在迁移中创建具有默认日期时间的表

我在迁移为我的表创建默认日期时间值时遇到了一些麻烦。我正在使用 EF Core Jet 提供程序,需要使用 MS Access-MDB-Files。

我的连接字符串如下:

我想将属性的默认日期时间设置为时间“15:30”。我尝试了以下事情:

  • entity.Property(e => e.EndTime).HasDefaultValueSql("#01.01.1900 15:30:00#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#01.01.1900 15:30#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#15:30:00#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#15:30#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#01/01/1900 03:30:00#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#01/01/1900 03:30#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#03:30:00#");
  • entity.Property(e => e.EndTime).HasDefaultValueSql("#03:30#");
  • entity.Property(e => e.EndTime).HasDefaultValue(new TimeSpan(15,30,0));
  • entity.Property(e => e.EndTime).HasDefaultValue(new TimeSpan(3,0,0));

并且总是收到以下错误消息:

System.Data.OleDb.OleDbException (0x80040E14):CREATE TABLE 语句中的语法错误。

然后我深入研究了 EntityFrameworkCore.Jet 的源代码,并在 JetMigrationsSQLGenerator 类中的以下注释中找到: // Jet does not support defaults for hh:mm:ss in create table statement

但在我们的旧代码库中,我们正是使用 ADO-Driver(它是一个遗留的 Delphi 应用程序)来执行此操作。

所以我有以下问题:

  • 我认为这通常是可能的,我错了吗?
  • EF-Core Jet 提供程序中实现的行为是否错误?
  • 最重要的是:我怎样才能让它工作?

编辑: 为了澄清我的步骤,我总是在更改模型构建器配置并使用功能Add-Migration <MigrationName>Update-Database对其进行测试后删除了 Migrations 文件夹。

编辑 2: 似乎 EF Core 提供者的评论并非完全错误。#12.30.1899 03:30:00#Access 不支持使用 TimeSpan 创建的组合日期时间。但是,如果直接在 Access 中输入 create 语句并使用 time ( #03:30:00#) 就可以了。但我无法让 EF Core 创建这样的语句。

编辑 3: 在我使用该函数的情况下,HasDefaultValueSql语法错误的原因似乎是 EF Jet Provider 中的一个错误。使用此函数时,创建的 SQL 语句以 this 结尾DEFAULT ('#<value>#'),的问题是不接受括号。这似乎是一个已知问题。

编辑 4: 我的应用程序文化存在问题。我更改了它,现在我可以让 EF Core 成功生成 DateTimes,但是由于 Jet-provider 的实施,这些时间值丢失了。所以目前的情况如下:如果我使用

  • DateTime我确实可以Update-Database成功调用,但没有时间值,只有日期
  • TimeSpanUpdate-Database通话失败(我怀疑 Access 不喜欢有时间的日期)
  • HasDefaultValueSql("#03:30:00#")调用时我也遇到异常UpdateDatabase

我认为 EF Core Jet Provider 是这里的问题,但我并不完全相信。

0 投票
0 回答
71 浏览

jet-ef-provider - 我无法编译 JetEntityframeWork

我想在我的项目中使用 JetEntityframeWork 将 MS Access 数据库用作 DbFirst。我尝试根据此处 JetEntityframeWork 的安装指南启用 DbFirst 但我不能。

这是我启用的步骤:

  1. 从这里下载 JetEntityframeWork v-6.2.0 源代码。
  2. 提取 zip 文件
  3. 以管理员身份打开我的 Visual Studio 2019 并打开解决方案
  4. 更新“Install.cmd”(REGROOT)=>“SET REGROOT=SOFTWARE\Microsoft\VisualStudio\19.0_Config”
  5. 编译项目在此处输入图像描述

它返回一个错误 ,在此处输入图像描述

我忘了什么吗?我现在该怎么办?

0 投票
0 回答
160 浏览

entity-framework-core - 无法在 EF Core 5 上使用 EntityFrameworkCore.Jet 搭建脚手架-DbContext

我想搭建一个旧的 ms 访问数据库 (.mdb)。因此,我使用 Visual Studio 2019 为控制台应用程序创建了一个 sln。然后使用 nuget 添加以下软件包:

在包管理器控制台中,我输入

Scaffold-DbContext -Connection "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Repo\Samp.mdb;Jet OLEDB:Database Password=**** ;" -Provider EntityFrameworkCore.Jet -OutputDir Models\Models600 -verbose

命令运行,我收到以下错误:

找不到方法:'无效 Microsoft.EntityFrameworkCore.Storage.DecimalTypeMapping..ctor(System.String, System.Nullable`1<System.Data.DbType>)'。

我需要做什么才能使其正常工作?

0 投票
0 回答
76 浏览

jet-ef-provider - VS2017 中的 JetEntityFrameworkProvider 设置

VS2017 15.9.21for.NET 4.5 中编译我的项目后,出现以下错误,我错过了什么?

错误对话框

这是抛出异常的地方:

这是我的 DbContext 设置:

这是我的config.app

异常详情:

0 投票
1 回答
159 浏览

entity-framework-core - 尝试在向上迁移中更改列数据时出现锁定问题

我正在尝试将 sql 语句添加到我当前项目的迁移的 up-method 中。该数据库是一个 Ms Access 数据库。迁移在运行时应用。情况如下:我有一个基础Initial-create迁移,在我的情况下假设已经应用了它。由于这个应用程序的性质,我们有一个表A它包含某种外键,但没有定义任何 sql-constraints。这意味着外键关系是通过程序代码设计的,而不是在 sql 中表示外键关系。键是一个字符串,如果没有外部元素,则值为空。现在我们要添加一个新的迁移,它通过 sql-constraints 强制执行这种关系。这可以通过标准的 ef-core 迁移代码正常工作,但是当迁移应用于非空数据库时就会出现问题。sql 外键需要表A中的所有空字符串为空(否则会出现异常)

看似简单的解决方案是在新迁移的 up-method 中添加以下语句:

但这会导致以下异常:

但是,如果我们从迁移代码中删除此 sql 语句并按如下方式执行它,则在调用之前context.Database.Migrate()

它工作得很好。我在 up-method 中使用 sql 代码的方法完全错误吗?这可能是什么原因?最重要的是,我该如何解决这个问题?第二种方法是我目前解决这个问题的方法,但我担心这意味着从长远来看,我不能使用迁移机制,而必须使用自定义解决方案(或其他框架)。我宁愿坚持使用 ef 核心。

重要提示:此应用程序与旧应用程序一起使用,我们必须在初始启动时通过 sql 代码插入应用程序历史记录。为此,我们创建一个事务并简单地创建历史表并插入最初创建的表。这工作得很好,事务和命令都应该关闭。这个函数永远不会触及表A。