问题标签 [devart]

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

c# - 实体框架 - 为什么 EF 在一对一关系中使用 LEFT OUTER JOIN?

为什么 .NET Entity Framework 生成的 SQL 使用子查询并在简单的一对一关系上使用左外连接?我希望在两个表上看到一个简单的连接。我正在使用Devart Dotconnect for Oracle。有任何想法吗?

下面是我看到的由EFTracingProvider提供的输出:

0 投票
1 回答
2369 浏览

mysql - Linq to Entities 和 LEFT OUTER JOIN 问题与 MANY:1 关系

有人可以告诉我,为什么 Linq to Entities 将多对一关系转换为left outer join而不是inner join?因为对 DB 本身存在引用约束,以确保在正确的表中有记录,所以inner join应该使用它(它会工作得更快)

如果关系多到 0..1 left outer join将是正确的。

问题

是否可以以某种方式编写 LINQ,以便将其转换为inner join而不是left outer join. 它将大大加快查询执行速度……我以前没有使用过 eSQL,但在这种情况下使用它是否明智?它会解决我的问题吗?

编辑

我更新了标签以包含我在后台使用的技术:

  • 实体框架 V1
  • 用于 Mysql 的 Devart dotConnect
  • MySql 数据库

如果有人可以测试在 Microsoft SQL 服务器上是否也是如此,那么如果这是 Devart 的问题或者它是一般的 L2EF 功能,它也会给我一些见解......但我怀疑 EF 是这里的罪魁祸首。

0 投票
6 回答
4418 浏览

mysql - 我们可以用 Skip()、Take() 和 OrderBy() 控制 LINQ 表达式的顺序吗

我正在使用 LINQ to Entities 来显示分页结果。但是我遇到了Skip(),Take()OrderBy()调用的组合问题。

一切正常,除了OrderBy()分配得太晚。Skip()它在结果集被and削减后执行Take()

因此,每一页结果都有按顺序排列的项目。但是排序是在少量数据的页面上完成的,而不是对整个数据集进行排序,然后用Skip()和限制这些记录Take()

如何设置这些语句的优先级?

我的例子(简化)

一种可能(但不好)的解决方案

一种可能的解决方案是将聚集索引应用到按列排序,但该列经常更改,这会降低数据库在插入和更新时的性能。我真的不想那样做。

编辑

我运行ToTraceString()了我的查询,我们可以实际看到 order by 何时应用于结果集。最后不幸的是。:(

0 投票
2 回答
2442 浏览

sql-server - 使用 VCL for web (intraweb) 作为将 web 界面添加到传统非分层 (2 层) Delphi win32 应用程序的技巧是否有意义?

我的团队正在维护一个巨大的客户端服务器 win32 Delphi 应用程序。它是一个客户端/服务器应用程序(厚客户端),它使用 DevArt (SDAC) 组件连接到 SQL Server。

业务逻辑通常被“困”在组件的事件处理程序中,无论如何,通过某种程度的重构,将业务逻辑移动到公共单元中是可行的(这项工作的很大一部分已经在重构期间完成了......维护遗留应用程序的人else write 非常令人沮丧,但这是一个非常常见的工作)。

现在有一个Web界面的请求,我当然有几个选项,在这个问题中我想专注于VCL for web(intraweb)选项。

这个想法是为客户端/服务器应用程序和 Web 应用程序使用公共代码(相同的 pas 文件)。我听说很多人将遗留应用程序从 delphi 转移到 intraweb,但在这里我也试图保留厚客户端。

思路是使用通用代码,可能是用一些编译器指令来写具体代码:

然后另一个问题是“迁移计划”,假设我有 300 个功能,而在第一个版本中,我将只有 50 个在 Web 应用程序中可用。如何跟踪它?我正在考虑(ab)使用 Delphi 接口来处理这个问题。例如对于用户身份验证,我可以在一个过程中移动所有相关代码并声明一个接口,如:

通过这种方式,当我在两个应用程序(Thick Client 和 Intraweb)中实现 IUserAuthentication 接口时,我知道该功能已“移植”到 Web。无论如何,我不知道这种方法是否有意义。我做了一个原型来模拟整个过程。它适用于“Hello world”应用程序,但我想知道它是否对大型应用程序有意义,或者这个接口想法只会适得其反并且可能适得其反。

我的问题是:这种方法有意义吗?(Interface的想法只是一个额外的想法,它不像上面描述的公共代码部分那么重要)它是一个可行的选择吗?

我知道这取决于很多类型的应用程序,无论如何通用,我的应用程序属于 CRM/会计领域,单个安装的并发用户数通常少于 20 个,峰值为 50 个。

额外评论(更新):我问这个问题是因为我没有 n 层应用程序,我认为 Intraweb 是拥有与胖客户端具有通用代码的 Web 应用程序的唯一选项。在我的具体情况下,从 Delphi 代码开发 Web 服务毫无意义,所以我的替代方法是使用 ASP.NET 编写 Web 界面(复制业务逻辑),但在这种情况下,我无法利用公共代码简单的方法。是的,我也许可以使用 dll,但我的代码不适合。

0 投票
2 回答
650 浏览

linq - 更新 LINQ 中的更改的问题

我在更新数据库时遇到问题。应用程序显示更新的值,但数据库不显示。没有返回错误。我的桌子有一个PK。使用 DotConnect for Oracle,但 LINQ 语法相同。

控制台读取正确的更新值,但数据库不更新。

数据函数 DFunc.GetFoodOrder(Oid) 和数据上下文函数如下所示。它们都在另一个程序集中作为 LINQ DAL:

0 投票
1 回答
284 浏览

linq - 如何根据asp.net mvc中的角色动态分组列表

这是我的场景:我们希望有一个列出捐赠者的页面,这取决于查看页面的用户,我们希望按捐赠者的捐赠级别或只是他们的排序名称进行分组。让我感到困惑的是,我们想对匿名捐赠者进行分组,并根据分组进行计数。

在我的控制器中,我有

我想要类似的东西

我可以将其传递给我的视图,然后以某种方式显示在视图中

(我还是 asp.net MVC 和 LINQ 的新手,所以任何有用的参考资料来解释我做错了什么也将不胜感激)。

非常感谢。

0 投票
2 回答
3132 浏览

sql-server - Delphi:如何获取使用参数时传递给服务器的查询

我在 Devart TMSQuery.SQL 中有一个带有参数的查询。就像是

在我做的代码中

我想调试并查看发送到服务器的确切 sql 命令,如果我尝试使用 TMSQuery.sql 我只有:CustomerID,而我想要这个:

有没有一种快速的方法可以在不读取所有参数并大量重建查询的情况下实现这一点?

当然我有一个非常大的查询,超过 100 个参数,这就是我需要这个的原因

0 投票
2 回答
1465 浏览

delphi - 缓存数据集的建议

我想执行以下操作:

1)打开一个数据集(使用TMSQuery,SDAC DevArt组件)

2)将内容缓存到磁盘(想象一个切割者列表)

3)下次我需要打开数据集时,我将首先用缓存数据填充它,然后我将通过调用 TMSQuery.RefreshQuick 方法来刷新它。

通过这种方式,我计划大幅提高速度,因为我不需要检索在以前的应用程序运行中已经检索到的记录。

我怎样才能获得这个缓存?我有许多带有 TMSQuery 的数据模块,所以不知何故我希望有一个全局例程来检查每次我尝试打开 TMSQuery 时,如果该查询以某种方式被标记,我将尝试从缓存中恢复,调用 RefreshQuick,以防万一失败我将调用打开。

你能建议吗?

(我使用 Delphi 2009 和 SDAC 4.80)

0 投票
1 回答
1955 浏览

delphi - 如何访问 TCRDBGrid 组件中的搜索文本?

有没有办法访问在 Devart(核心实验室)TCRDBGrid 搜索栏中输入的文本?

我尝试实现 OnKeyDown 事件,但该事件在输入搜索字段期间没有发生,只有在选择网格本身时才发生。没有其他看起来相关的事件。

文本似乎进入了 TEdit,它是 TCRGridTitleEdit 的一部分,它是 TCRDBGrid 的一部分,但是是私有的。

有没有办法获取搜索文本?

示例 TCFGBGrid:

如果 UserId 987654 不存在,我想提示“创建新用户 987654?” 并可能创建一条 UserId 设置为 987654 的新记录。

0 投票
1 回答
326 浏览

.net - 写入大 BLOB 会引发 InvalidOperationException

我无法使用 .net 实体框架将大型 blob 写入 MySQL 数据库。< 1MB 的 Blob 可以正常工作。如果我尝试编写一个大于 1MB 的 blob,则会出现 InvalidOperationException,其文本为“必须打开连接”。发生。

我在用:

  1. 视觉工作室 2010
  2. .Net 3.5
  3. Devart ADO.NET 实体框架(最新)
  4. MySSQl(最新)

帮助表示赞赏。