问题标签 [odac]

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 回答
1106 浏览

asp.net-mvc - 如何绕过实体框架的 System.Data.Entity.Internal.InternalPropertyEntry.ValidateNotDetachedAndInModel(String method) 验证?

我正在使用自定义方法来跟踪 n 层断开连接的实体类的各个修改属性。我从

实体框架编程:Julia Lerman 和 Rowan Miller (O'Reilly) 的 DbContext。版权所有 2012 Julia Lerman 和 Rowan Miller,978-1-449-31296-1。

代码是:

此方法的目的是让 EF 知道只有一组预定义的实体字段已准备好在下次调用 SaveChanges() 时进行更新。这是为了解决实体在 ASP.NET MVC 3 中工作的问题,如下所示:

  • 在初始页面加载时:控制器的 Get 操作正在加载实体对象并将其作为参数传递给视图。

  • 视图生成用于编辑实体的 2 个字段的控件,并将记录的 ID 保存在隐藏字段中。

  • 当点击 [save] 并将实体发布回控制器时,除了视图中保留的 3 个字段之外,所有字段都带有一个空值。这是 MVC 绑定管理器的默认行为。

如果我将更改保存回数据库,更新查询当然会用如下语句覆盖非映射字段:

这就是我尝试单独跟踪字段并仅更新我感兴趣的那些字段的原因。在使用 ApplyChanges() 调用自定义方法之前,我正在添加要包含在更新中的字段列表IObjectWithState.ModifiedProperties 列表,以获取 SQL 语句如下:

问题是,在 ApplyChanges 中将其中一个字段标记为已修改时,即:

系统抛出以下异常

所以问题是。有一种方法可以绕过这个 EF 验证,或者让上下文知道我正在尝试更改的这个系统属性 (IsModified) 的存在吗?

架构总结:

  • EF 代码优先(注解 + Fluent API)
  • Oracle .NET EF 数据提供程序 (ODAC)
  • 使用 nInject.MVC 将上下文注入到自定义业务上下文 => 这就是我自定义 ApplyChanges() 方法的原因

    使用 (var context = new BreakAwayContext()){ context.Set().Add(root);

    对已经初始化的 dbcontext 的简单调用

    dbContext.Set().Add(root);

  • Oracle 数据库是手动创建的,即没有 EF 的帮助,因此不使用 EF 元数据表。

谢谢,伊万。

0 投票
1 回答
3149 浏览

c# - ODP.Net 和 C# 的 System.Reflection.RuntimeModule.GetTypes() 错误

我编写了一个相当复杂的 C# 应用程序,它通过 ODP.Net 访问 oracle 数据库。我在安装了 ODAC(32 位)的 Windows XP 机器(32 位)上开发了该应用程序。该应用程序在我的开发 PC 上运行没有故障,但在服务器上引发异常(windows server 2003 x64 service pack 2)。

我在服务器上安装了 .Net framework 4.0 (dotNetFx40_Full_x86_x64.exe) 的运行时以及 ODAC——我首先尝试使用 Windows x64 的 Release 4 (11.2.0.3.0),然后使用 ODAC 11.2 Release 4 (11.2. 0.3.0) 与适用于 Visual Studio 的 Oracle 开发人员工具。

没有一个工作。32 位版本更进一步。第一次在数据库上调用 LINQ 语句时,我收到以下消息。

64 位版本告诉我没有 Oracle.Access 支持,这与我第一次尝试在服务器上没有 ODAC 的情况下运行应用程序时收到的原始错误消息相同。

你们中的任何人都可以帮助我吗?我见过一些讨论类似问题的条目,我看到的唯一令人信服的答复是构建可执行文件,并将所有引用的 Copy Local 设置为 TRUE,但即使这样也失败了。我仍然收到相同的错误消息。

0 投票
1 回答
411 浏览

entity-framework - Oracle 实体框架

我已经安装了 ODAC 11,我想将它与 EF Database First 一起使用,但它没有出现在“选择数据源”对话框中,只是 SQL Server 提供程序。我不知道怎么走得更远。我需要一点帮助,拜托。

0 投票
1 回答
11864 浏览

visual-studio-2010 - 我可以在 VS2010 中使用 32 位 Oracle Developer Tools 和 x64 ODAC 吗?

从这里的 Oracle 网站: http ://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

这是针对他们最新的 Oracle 数据访问组件,适用于 Windows x64 的 64 位 ODAC 11.2 Release 4 (11.2.0.3.0)。我想使用开发人员工具(ODT),但它们在 64 位中不可用(可能是因为 VS2010 仍然是 32 位)。从网站:

重要提示:实体框架设计时功能需要 32 位 Oracle Developer Tools for Visual Studio 下载。以上下载完全支持实体框架部署,但不包含设计时工具。

我不使用 EF(我使用 Mindscape LightSpeed 产品,因为它通常比 EF 早 3 或 4 年)但原理是一样的 - VS2010 和 LightSpeed 是 32 位应用程序,无法加载/使用 x64 库。

我想使用 32 位工具 (ODT) 开发我的应用程序并使用 x64 ODAC 部署应用程序。有人做过吗?可以做到吗?有人吗?

如果重要的话,这适用于在虚拟 Windows Server 2008 R2 机器上运行的 WCF 服务。我半成功的做法是强迫每个人都使用 32 位操作,但如果像他们声称的那样支持 64 位,这似乎有点愚蠢。

在此先感谢,戴夫

0 投票
1 回答
651 浏览

c# - 如何在 EF4(ORACLE) 中处理并发

我想知道在使用 Entity Framework 4(ODAC) 编程时如何安全地更新数据。

一旦发生竞争条件,此代码将是危险的(逃避数量检查)。谁知道如何正确地做到这一点?

编辑:现在我知道 EF4 提供了一种将列作为跟踪令牌的机制。但我不确定如何在 oracle DB(9i) 中创建这种列?什么是正确的列类型?

0 投票
1 回答
753 浏览

oracle - Oracle 客户端版本 9 和 11 可以安装在同一台机器上吗?

我有一个使用 odac(11.2) 和 oracle 客户端 11.2 的程序。现在我想将它部署到一个已经安装了 oracle 9i 客户端的盒子上。

一些现有的程序依赖于它,所以我担心新客户会损害现有的程序。这是真的?我怎样才能让它们都正常工作?

0 投票
1 回答
64 浏览

.net - 实体模型向导缺少表格文档

我正在使用 ODAC 11.2 r4 在 Visual Studio 2010 中创建实体模型。现在我正在测试所有向导将从我的 oracle 数据库中自动生成的内容,我想弄清楚如何根据数据库生成文档。我已经为我的表和列设置了注释,但实体端没有显示。有没有办法让我的文档从这些评论或我在数据库端设置的其他字符串中自动生成?

0 投票
2 回答
360 浏览

entity-framework - 实体框架和继承 - EF 中可能存在的错误?

我一直在尝试开始使用实体框架并遇到了一种特殊的行为。我准备了这个简短的例子来演示。

简而言之,我正在尝试使用基本类型和继承类型“Person”和“Employee”来创建每个类型的表模型。问题是,当我使用诸如

我希望得到一个人员对象列表。尽管列表是 List 类型,但列表中的所有对象都是Employee对象,即使表中只有一条记录是针对员工的。看起来 EF 返回了错误的类型。

但是,添加另一个从 Person 继承的类型,例如“Superhero”(我试图将其作为一个明显的示例 :),并创建一个 Superhero 记录,现在相同的命令会按预期返回 Persons、Employees 和 Superheroes 的混合(以前我只有员工,即使他们不是员工)

细节

我正在使用 VS2010 和 Oracle 数据库,以及 ODAC 11.2.0.3 !我需要一些帮助来确认这是否是与 Oracle 相关的问题,或者这是否也发生在 MSSQL 数据库和 DDL 生成中。

我创建了一个新的控制台应用程序,然后转到 Add->New file->ADO.NET Entity Data Model。然后我制定了这个模型

英孚模型

我的代码如下所示:

结果:

结果 1

一切都很好。

现在,如果我删除 Employee 实体并注释掉“var result2 ...”行,我会得到以下结果:

结果 2

我没有对数据库中的数据进行任何更改。请注意所有实体现在如何拥有一种超级英雄!值得注意的是,我必须将“Superpower”属性设置为 Nullable=True,否则会出现异常,因为实际上只有一条记录是超级英雄(其他记录在 PersonSet_Superhero 表中没有任何整数)

那么,这是实体框架、ODAC 或其他任何东西中的错误,还是我在这里做错了什么?

0 投票
2 回答
2727 浏览

oracle - .net 4.5 中的 Oracle 存储过程

我正在尝试在 .net 4.5 中执行以下存储过程

这些参数中的大多数可以为空。在蟾蜍中,我可以执行它:

在 C# 中,我正在尝试以下操作:

我收到以下错误

我尝试过使用和不使用可选参数以及使用/不使用 return_value/:out 参数。

我正在使用 Oracle.DataAccess 提供程序 v. 4.112.3.0。它适用于没有那么多参数/只有一个输出参数(光标)的其他存储过程。

编辑:我发现一个错误,我需要在参数数组中首先有输出参数;

现在我收到错误:

似乎是数据库错误,但看起来很奇怪,因为我可以从 toad 执行相同的命令而不会出现错误。

0 投票
0 回答
170 浏览

expression-trees - Expression.* 命名空间是为 EF 4.3 + ODAC 创建表达式树的唯一方法吗?

我遇到了 ODAC(Oracle 数据访问组件)、实体框架 4.3.1 和表达式树的问题。我们有一个在实体框架中映射的遗留数据库(不是吗?)。该表有数百万条记录和一百多列(悲伤的脸)。

以下是对索引列的示例查询:

我读过这样的文章,解释了 Func<> 和 Expression> 之间的区别以及 Expression> 实际上如何传递到数据库进行查询,这就是它更快的原因。

http://www.fascinatedwithsoftware.com/blog/post/2011/12/02/Falling-in-Love-with-LINQ-Part-7-Expressions-and-Funcs.aspx - 一切都很好,但如果在匆忙,只需阅读标题为“意外后果”的部分即可了解主要内容

http://fascinatedwithsoftware.com/blog/post/2012/01/10/More-on-Expression-vs-Func-with-Entity-Framework.aspx

为什么要使用 Expression<Func<T>> 而不是 Func<T>?- 如果没有相应的 SO 问题,任何链接都是不完整的

我的问题是:人们真的坐在那里使用 Expression.* 类构建表达式树吗?除了简单比较之外的任何查询都变得非常复杂,几乎无法阅读。将 Expression> 传递给数据库时我缺少什么?对于这个手动构建的表达式树解决方案,我该打谁的脸?甲骨文?英孚?我错过了什么?