问题标签 [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 投票
2 回答
23292 浏览

entity-framework - Microsoft Jet DB 是否与实体框架一起使用?

在此论坛中,有人提到实体框架不适用于 Access (Jet DB - .mdb)。但是,似乎有一个 Jet DB 提供程序,如此处所述

这让我觉得我唯一需要的 Entity Framework 就是在定义模型之前定义以下内容:

有谁知道 Entity Framework 是否适用于 Jet DB,我想在开始之前确保它可以正常工作,因为我的设计文档取决于这个事实。

谢谢

0 投票
3 回答
73096 浏览

entity-framework - 如何为 MS Access 数据库使用实体框架

我必须在 C#.Net 4.0 中开发一个桌面 Windows 应用程序,它将在三个不同的数据库中运行,即。MS Access 2007 及更高版本、Oracle 11G 和 SQL Server 2008。现在我想在我的应用程序中使用实体框架。这是在我的应用程序中使用 EF 的最佳选择吗?如果是,那么如何使用 Access 数据库的实体框架?提前致谢。

0 投票
1 回答
2915 浏览

c# - JetEntityFramework 与 EF 6?

由于作者向 StackOverflow 寻求帮助请求,因此在此处抛出此问题。

有一个正在运行的现有应用程序,最初写入 SQL Server。可悲的是,现在有一个非常古老的 Access 数据库,我必须与之交谈。尝试使用 JetEntityFramework 来帮助我,这样我就不需要进行批发替换。走出大门,我抛出了这个异常。我怀疑 web.config 存在问题,因为正确设置的文档很少。

错误

System.InvalidOperationException 未由用户代码处理
HResult=-2146233079 消息=实体框架提供程序类型“JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider, Version=1.2.4.0, Culture=neutral, PublicKeyToken=756cf6beb8fe7b41”的“实例”成员没有返回从“System.Data.Entity.Core.Common.DbProviderServices”继承的对象。实体框架提供者必须从此类继承,并且“实例”成员必须返回提供者的单例实例。这可能是因为提供者不支持 Entity Framework 6 或更高版本;有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882

这是我的 web.config 的相关片段(被要求更改 DBContext 和 MDB 文件的实际名称)

0 投票
1 回答
895 浏览

entity-framework - 如何在代码中定义实体框架提供者?

我正在使用JetEntityFrameworkProvider. 我正在尝试连接到一个 MS Access 文件(它有 ext .sep,但它确实是一个 Access 文件)。

我正在尝试在代码中定义连接字符串和提供程序,但它不起作用。在我运行之前,我收到以下错误:

无法确定“JetEntityFrameworkProvider.JetProviderFactory”类型的提供者工厂的提供者名称。确保在应用程序配置中安装或注册了 ADO.NET 提供程序。

我不想在配置中配置提供程序。当然有办法做到这一点。

当我运行它时(是的,它会构建),我得到这个错误:

System.InvalidOperationException:“'Jet OLEDB:Database' 提供程序未在本地计算机上注册。”

上下文类

实体类

0 投票
1 回答
261 浏览

jet-ef-provider - Jet EntityFramework Provider 报告“找不到可安装的 ISAM。”

我正在使用 JetEntityFrameworkProvider

我正在尝试连接到 MS Access 文件(它具有扩展名 .sep 但它确实是一个访问文件)。我知道 JetEntityFrameworkProvider 确实首先支持 DB,但我应该能够手动创建我需要的模型。(正确的 ?)

我正在尝试在代码中定义连接字符串和提供程序,但它不起作用。当我运行它时,我收到以下错误

System.Data.OleDb.OleDbException:“找不到可安装的 ISAM。”

上下文类

实体类

0 投票
1 回答
616 浏览

jet-ef-provider - 索引、主键或关系中的重复值

使用 JetEntityFrameworkProvider 和 MS Access/Jet 文件我正在更新实体的值,并且在保存更改时收到以下错误。

OleDbException:您请求对表的更改不成功,因为它们会在索引、主键或关系中创建重复值。更改包含重复数据的一个或多个字段中的数据,删除索引,或重新定义索引以允许重复条目,然后重试。

这是我的代码

这是我的代码输出,您可以看到没有重复的索引或重复的 BookNumber(已编入索引并且是唯一的)

预计到达时间:

模型

0 投票
1 回答
156 浏览

jet-ef-provider - 非索引、非唯一属性更改时出现重复值错误

我在这里问了一个类似的问题,但这是导致相同错误消息的不同情况。

我正在更新一个非索引、非唯一属性 PageNumber。

我收到以下错误

OleDbException:您请求对表的更改不成功,因为它们会在索引、主键或关系中创建重复值。更改包含重复数据的一个或多个字段中的数据,删除索引,或重新定义索引以允许重复条目,然后重试。

页面模型类

预计到达时间:

我有更改public int BookNumber { get; set; }public int? BookNumber { get; set; }并不能解决问题。

0 投票
1 回答
579 浏览

c# - 如何对两个实体进行内部连接并输出到另一个类类型

我正在围绕 Access DB 创建一个实体框架包装器,但我无法修改架构。

我有一个名为 Component 的实体和一个名为 TerminalInfo 的实体。关系是 1:0..1。我想将结果映射到名为 Terminal 的第三类。

这就是我到目前为止所拥有的。

我收到以下语法错误。

未定义或导入预定义类型“System.ValueTuple`2”

ETA:这与未定义或导入预定义类型“System.ValueTuple´2”无关

问题是 Lambda 表达式中的拼写错误。

0 投票
2 回答
4261 浏览

asp.net - HowTo 使用实体框架代码优先实现更新具有唯一迁移值的每一行

我正在寻找一种适当的方法来扩展现有数据库,基于实体框架 6 代码优先实现,并为表中每个现有行的新字段添加唯一值。

到目前为止,我已经创建了一个添加新字段的迁移。

Up 方法如下所示:

我被困在应该用唯一(计算)值填充新字段的地方。为简单起见,假设数据库中的每个现有行都应在迁移时分配一个 GUID。

使用这样的 SQL 语句将更新具有相同 GUID 的所有行。但我需要它对每一行都是唯一的。

在 Up 方法中使用 foreach 似乎有点错误……在这种情况下,最佳实践是什么?

另外:我使用的数据库是access,所以不能使用newid()或者random()。GUID 旨在成为以编程方式计算的值的虚拟对象。它将是客户其他一些属性的哈希值。所以它必须通过迁移来计算和更新。

0 投票
2 回答
1333 浏览

asp.net - 使用 Jet Engine 使用实体框架(代码优先)重命名列(并保留数据)

我正在寻找一种解决方案来重命名表的列,使用 Jet Engine 数据库提供程序(MS Access 数据库)使用实体框架代码首先迁移保留值。

由于处理 Jet Engine 和 MS Access DB,我尝试了几种方法,但它们都没有奏效。

以下是我已经尝试过的模型更改和方法的详细信息:

模型变化

(我缩短了更改以保持清晰):

除了“WebService”之外,还有其他服务类型都具有相同的属性(注册日期,...)。因此,我创建了一个ServiceState代表这些属性的新类。

移民

在迁移时,我必须将数据移动到新结构。我使用 PM-Console 和“add-migration”创建了一个迁移。这是 up 函数的自动生成代码:

使用此代码,数据将丢失,因为新旧属性之间没有数据传输。

尝试的方法

为了保留数据,我尝试了以下方法,如如何在 Entity Framework 5 Code First 迁移中重命名数据库列而不丢失数据?.

1.使用重命名列

这不起作用。PM-Konsole 报告

无法使用 Jet 重命名对象

2.使用SQL进行更新

也不行。它会引发错误GenerteSqlStatementConcrete

例外

3.使用数据库上下文在迁移Up方法中更改数据

恕我直言,这不是一种选择。这会导致状态不一致,因为模型已经处于迁移后状态,但数据库在表中仍然具有迁移前状态。模型和数据库不匹配,导致错误。

自数据库创建以来,支持“DbContext”上下文的模型已更改。考虑使用 Code First 迁移来更新数据库。

为了完成这项工作,我必须禁用模型检查,我认为这不是一件好事。(参考:迁移Up方法中的更改数据-实体框架

问题

如何根据上面提到的我正在处理的限制(主要是 Jet Engine,由于 MS Access 数据库)重命名列/保留迁移数据?