问题标签 [dotconnect]

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

c# - 在代码中设置连接字符串

我有一个 .NET MVC 应用程序,它利用实体框架和第 3 方提供程序与 Oracle 数据库进行交互。我需要能够根据谁在使用应用程序在两个连接字符串中进行选择。第 3 方提供者假定它将在实体数据模型所在的项目的 app.config 中找到一个连接字符串,该连接字符串的名称对应于实体容器名称。

问题:如何设置连接字符串以使其存在?如果我在对数据库进行任何调用之前使用此处概述的 EntityConnectionStringBuilder是否等同于在 app.config 中设置连接字符串?IE 实体框架的东西会找到它正在寻找的东西吗?

0 投票
1 回答
401 浏览

c# - dotConnect for SQLite 是否支持 Mono?

Devart 的 SQLite dotConnect 提供程序是否支持 Mono?谷歌似乎说有,但他们自己的兼容性页面说没有。

我希望在带有 SQLite 的 Mono 上使用 Code First。

0 投票
1 回答
844 浏览

oracle - Dotconnect for Oracle - EF - 全局事务中的本地会话过多

我必须在单个事务中将 2 条记录插入到一​​个数据库中,并将大约 40 条记录插入到另一个数据库中。我正在使用 TransactionScope 并收到此错误。

我确实读过这篇文章,但这无济于事,因为涉及到 2 个 db,而且它是一个分布式事务。

http://www.devart.com/blogs/dotconnect/index.php/entity-framework-tips-and-tricks-part-3.html

我的代码有点像下面。

即使我在循环之外创建“上下文”(与上面链接中的示例不同),代码仍然会因“本地会话过多”错误而失败。

另外,我注意到每个查询“context.Orders.Where(...)”都被列为新事务。我使用的是实体框架而不是 Linq to Sql。所以上面的代码在 20 次迭代时中断。

除了使它们成为 2 个独立的本地事务并以某种方式手动进行事务处理之外,我现在还有什么选择。

0 投票
2 回答
923 浏览

oracle - dotConnect 解决 Oracle 希伯来语问题 - 乱码 - 获取 ¿¿¿¿

我正在尝试通过 Devart dotConnect 使用包含希伯来字符的 Oracle 数据库创建 EF。

在注册表中:

在 web.config 中:

在大师:

我得到的是“¿¿¿¿”而不是真正的价值。我可以修吗?

0 投票
2 回答
4749 浏览

c# - 使用 devart dotConnect 调用 Oracle 存储过程

我是 Entity Framework 的新手,并试图调用 oracle 存储过程,但没有成功。所以这是我的问题:

如何使用 devart dotConnect 调用 oracle 存储过程?

例如,我有存储过程:

从 C# 我想打电话给:

但它抛出“EntityCommandExecutionException”:

执行命令定义时发生错误。有关详细信息,请参阅内部异常。

这是内部异常:

ORA-06550:第 2 行,第 3 列:\nPLS-00306:调用“GET_PROBLEMS”时参数的数量或类型错误\nORA-06550:第 2 行,第 3 列:\nPL/SQL:语句被忽略

我用了

“类型(字节[])”

作为 ObjectParameter 类型,因为我在 Devart Entity Developer 生成的代码中看到了这一点。

ps 顺便问一下,你会如何在大型项目中推荐 dotConnect?

0 投票
3 回答
23492 浏览

oracle - CLOB vs. VARCHAR2 还有其他选择吗?

我正在为我的应用程序使用 DevArt 的 dotConnect 和 Entity Developer。我已经使用实体优先功能创建了表。

我注意到许多列类型设置为 CLOB。我只有使用 MySQL 和 Microsoft SQL server 的经验,所以我不确定是否将 CLOB 用于应用程序。我做了一些阅读,发现 CLOB 用于大量数据。

问题是:

  1. 是否对大多数字段使用 CLOB,例如用户的性别(应该是 varchar (1) )或全名,是否可行?将 CLOB 字段转换为 VARCHAR2 的步骤需要删除列然后重新创建它,并且在 DevArt 的实体资源管理器中存在错误,因此我希望尽可能避免它。编辑:我刚刚发现,如果您为字符串字段设置最大长度,它将自动成为 VARCHAR2。

  2. Oracle 中是否有 TINYTEXT 的等价物?

0 投票
2 回答
622 浏览

oracle - 需要帮助转换 Linq 查询(Silverlight RIA 实体 - Oracle DB)

我对 SQL 没有任何问题,但我发现 Linq 有点令人困惑。C#、.NET4、Silverlight、RIA 服务、Oracle DB (v?)、运行 Devart dotConnect 6.10.121 的 VS2010。

我有一个 RIA 实体

更多字段,如用户等,不适用于本帖。有许多工作组成一个过程。每个工作在此表中都有一个条目,但我想要的视图是按摘要分组的日期。

我将在查询中调用 context.Load,我在其中传递开始和结束日期,在 Oracle 中如下所示:

conttext.Load 将从返回 IQueryable 的方法中调用 linq 查询。linq 语句必须在 Devart dotConnect for Oracle 下为 Oracle 运行。我猜我需要一些自定义类来保存结果,比如 ProcessLogHdrDateSummary。

如果你们能帮我填补缺失的东西????? linq,我将不胜感激:

非常感谢!

0 投票
3 回答
11098 浏览

sql - 大型 SQL 事务:在 PostgreSQL 上内存不足,但在 SQL Server 上工作

我决定将我的 C# 守护程序应用程序(使用 dotConnect 作为 ADO.NET 提供程序)从 SQL Server 2008 R2 移动到 PostgreSQL 9.0.4 x64(在 Windows Server 2008 R2 上)。因此,我稍微修改了所有查询以匹配 PostgreSQL 语法,并且......陷入了 SQL Server 上相同查询从未发生过的行为(甚至在低速版上也没有)。

假设数据库包含 2 个非常简单的表,彼此之间没有任何关系。它们看起来有点像这样:ID、名称、型号、ScanDate、Notes。我有一个转换过程,它通过 TCP/IP 读取数据、处理它、启动事务并使用 vanilla INSERT 将结果放入上述 2 个表中。表格最初是空的;没有 BLOB 列。糟糕的一天大约有 500.000 个 INSERT,全部包含在单个事务中(顺便说一句,不能拆分为多个事务)。从未进行过 SELECT、UPDATE 或 DELETE。INSERT 的一个例子(ID 是 bigserial - autoincremented 自动):

SQL Server 平静地接受负载,同时保持约 200 MB 的合理工作集。然而,PostgreSQL 每秒事务运行会占用额外的 30 MB (!) 并迅速耗尽系统 RAM。

我已经完成了我的 RTFM 并尝试摆弄 postgresql.conf:将“work_mem”设置为最小 64 kB(这稍微减慢了 RAM 占用),将“shared_buffers”/“temp_buffers”减少到最小(没有区别),-但是无济于事。将事务隔离级别降低到未提交读取并没有帮助。除了 ID BIGSERIAL (PK) 上的索引之外,没有其他索引。SqlCommand.Prepare() 没有区别。没有建立任何并发连接:守护进程独占使用数据库。

似乎 PostgreSQL 无法应对令人麻木的简单 INSERT-fest,而 SQL Server 可以做到这一点。也许这是 PostgreSQL 快照与 SQL Server 锁隔离的区别?对我来说这是一个事实:原版 SQL Server 可以工作,而原版和经过调整的 PostgreSQL 都不能。

在基于 INSERT 的事务运行时,我可以做些什么来使 PostgreSQL 内存消耗保持平稳(显然是 SQL Server 的情况)?

编辑:我创建了一个人工测试用例:

DDL

C#(需要 Devart.Data.dll 和 Devart.Data.PostgreSql.dll)

这会重新创建内存占用。但是:如果在 FOR 循环之外创建了“cmd”变量并且 .Prepare()d ,则内存不会增加!显然,用相同的 SQL 准备多个 PgSqlCommands 但不同的参数值不会在 SQL Server 中那样在 PostgreSQL 中产生单个查询计划。

问题依然存在:如果使用 Fowler 的 Active Record dp 插入多个新对象,则准备好的 PgSqlCommand 实例共享并不优雅。

有没有办法/选项来促进查询计划重用具有相同结构但不同参数值的多个查询?

更新

我决定看看最简单的情况——SQL 批处理直接在 DBMS 上运行,没有 ADO.NET(由 Jordani 建议)。令人惊讶的是,PostgreSQL 不会比较传入的 SQL 查询,也不会重用内部编译的计划——即使传入的查询具有相同的参数!例如,以下批次:

PostgreSQL(通过 pgAdmin -> 执行查询)——占用内存

SQL Server(通过 Management Studio -> Execute)——保持内存使用平稳

PostgreSQL 日志文件(感谢 Sayap!)包含:

显然,即使在将整个查询按原样传输到服务器之后,服务器也无法对其进行优化。

ADO.NET 驱动程序替代

正如 Jordani 建议的那样,我尝试了 NpgSql 驱动程序而不是 dotConnect - 结果相同(缺乏)。但是, .Prepare() 方法的 Npgsql 源代码包含以下启发性的行:

日志文件中的新内容:

在这段日志摘录中,效率低下非常明显......

结论(例如它们)

Frank 关于 WAL 的注释是另一个觉醒:SQL Server 对典型的 MS 开发人员隐藏的其他配置。

NHibernate(即使在其最简单的用法中)正确地重用准备好的 SqlCommands...如果从一开始就使用它...

很明显,SQL Server 和 PostgreSQL 之间存在架构差异,并且专门为SQL Server 构建的代码(因此幸福地没有意识到“无法重用相同 sql”的可能性)在 PostgreSQL 上不会有效地工作重构。并且重构 130 多个旧 ActiveRecord 类以在杂乱的多线程中间件中重用准备好的 SqlCommand 对象并不是“只需替换 dbo-with-public”类型的事情。

不幸的是,对于我的加班,Eevar 的回答是正确的 :)

感谢所有参与的人!

0 投票
1 回答
4327 浏览

c# - 使用 Entity Framework Code First 通过 devart dotconnect 连接到旧版 Oracle 数据库

错误:类型 clob 未使用命名空间或别名进行限定。只有 PrimitiveTypes 可以在没有限定的情况下使用。

我一直在尝试使用 EF 4.1(代码优先)和 MVC 3,针对旧版 Oracle 10g 数据库,使用 devart dotconnect。不能更改旧数据库。我正在尝试将其中的数据读入网页。

(Devart.Data.Oracle 版本:5.70.140.0)

在此过程中,我遇到了一些错误需要克服,但来到了这个:

错误 0040:类型 clob 未使用命名空间或别名进行限定。只有 PrimitiveTypes 可以在没有限定的情况下使用。

这是我的代码:

Web.config 连接信息:

编辑:额外信息,这是我试图从中读取的(许多)第一张表。

MVC 控制器抛出这个

Local = '(model).Local' 引发了“System.Data.MetadataException”类型的异常

0 投票
2 回答
389 浏览

nhibernate - dotConnect mobile 和 fluent nhibernate 在紧凑框架 3.5 中

我们正在使用dotConnect mobile连接到 Oracle DB。

我知道 dotConnect 可以在桌面上与 NHibernate 和 Fluent Nhibernate ORM 一起使用,但这种组合也可以与 Compact Framework(3.5 版)一起使用吗?