问题标签 [openaccess]

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

c# - Telerik OpenAccess 为每个函数调用生成相同的查询

我正在使用类似模式的通用存储库来获取数据。有 100 多个实体,因此为每个实体创建单独的存储库并不是一个真正的选择。以下是同一类的一些函数:

问题是不管调用哪个函数,Sql profiler显示都是一样的

从 [表格] 中选择 [列]

我想在使用 Take(1) 或 Count() 或 Where() 时,应使用Select的Count()TopWhere子句相应地进行查询,但这些函数对查询生成绝对没有影响。显然,从服务器获取所有数据后,每个操作似乎都在内存中执行。

如果我访问它的方式有问题或者这是 Telerik 的正常行为,请指导我?

0 投票
1 回答
186 浏览

c# - Telerik OpenAccess:在文件“配置”中指定了类的映射,但找不到该类

我有一个使用 Telerik Open Access 的 C# Windows 服务。当我调用以下代码(查询)时,我收到以下错误。
代码

错误

在文件“config”中指定了类“Store.Data.User”的映射,但找不到该类。--> StoreModel/namespace[Store.Data]/class[User]

我怀疑该错误与查询本身无关,而是与存储库/OpenAccess 配置有关。

有没有人对此有见识?

谢谢!

0 投票
1 回答
326 浏览

c# - ASP.NET MVC 中的 Telerik OpenAccess NULL 参考

我在 ASP.NET MVC 5 中使用 Telerik 域模型。当我在单元测试项目中使用上下文时,一切正常。但是当我在 MVC 控制器上使用它时,我得到了这个异常:

谢谢

0 投票
1 回答
144 浏览

api - 如何通过 API/OAI/FTP 从开放存取期刊中获取出版物关键字?PubMed 或 DOAJ 或任何其他平台?

是否有已知的 API 或任何方法来获取DOAJ.orgPMC 开放访问子集中所有出版物的“作者列出的关键字” ?

我尝试了PMC 开放访问子集的 ftp,但 XML 文件只有 ID、摘要、标题、作者和附属机构作为任何文章的元数据。我希望大量获取每个出版物中列出的关键字。

此外,我看到几乎没有相同的线程,但仍然没有找到我正在寻找的答案。于是发了新帖。

非常感谢任何帮助。

谢谢,

阿斯米

0 投票
1 回答
922 浏览

sql - 替代 TOP 或 LIMIT 子句?

我正在以下查询中寻找替代 TOP 或 LIMIT 子句的方法。我希望输出是引擎状态从之前的值发生变化时。我将在开始和结束时合并另一个表,这样我就可以拥有该月的第一个值和该月的最后一个值,但为简单起见,这未在下面显示。基本上,我想要列输出当状态从一行更改为下一行时,在报告中。

小数据集如下。数据集中涉及 20 个引擎,下面仅显示一个。每月大约 180K 行。

该数据库使用下面链接的 OpenAccess SQL 运行。TOP 可以在子查询、派生表或联合联合中使用,但不能使用。据我所知,不支持 LIMIT 。

http://media.datadirect.com/download/docs/openaccess/sdk/openaccess_sql.pdf

0 投票
2 回答
4353 浏览

c# - 优化 .NET POCO 的 JSON 序列化性能

我一直在尝试优化要导入 MongoDB 的超过 500K POCO 的 JSON 序列化,但遇到的只是头痛。我最初尝试了 Newtonsoft Json.Convert() 函数,但这花费了太长时间。然后,根据 SO、Newtonsoft 自己的网站和其他位置上的几篇帖子的建议,我尝试手动序列化对象。但是没有注意到太多,如果有任何性能提升的话。

这是我用来启动序列化过程的代码......在每行上方的注释中,是给定一个包含 1000 个对象的数据集,完成每个单独操作所花费的时间。

目前,将每个单独的对象序列化为 JSON 文档大约需要 0.5 - 0.75 秒……对于 1000 个文档,大约需要 10 分钟……对于 10,000 个文档,大约需要 100 分钟,等等。我发现持续时间相当一致,但最终这意味着为了加载 600K 记录,执行数据加载将需要大约 125 个连续小时的处理时间。这是针对最终可能每天添加 20K - 100K 新文档的消息传递系统,因此性能对我们来说是一个真正的问题。

我正在序列化的对象包含几层“导航”属性或“嵌套文档”(取决于您是通过 ORM 还是 MongoDB 镜头查看它们),但在其他方面并不是特别复杂或值得注意。

我构建的序列化代码将前面代码示例中创建的 JsonTextWriter 实例传递到 POCO 的 ToJSON 函数中,因此我们不会为每个模型创建新的编写器以在序列化自身时使用。

以下代码是一些对象的截断示例,旨在说明实现技术(如何传递编写器以及如何手动构造 JSON)。还有更多属性和更多相关/嵌套对象,但这是我必须进行的“最深”遍历的一个示例。

它从“Session”对象开始,递归地调用它的依赖属性来序列化自己。

我怀疑我忽略了某些东西,或者问题在于我实现序列化的方式。一位 SO 发帖人声称通过手动序列化数据将他的加载时间从 28 秒减少到 31毫秒,所以我期待更显着的结果。事实上,这与我使用 Newtonsoft Json.Convert() 方法观察到的性能几乎完全相同。

任何诊断序列化延迟源的帮助将不胜感激。谢谢!

更新

虽然我还没有从 ORM 中提取数据访问,但我已经能够确认延迟实际上来自 ORM(感谢评论者)。当我按照建议添加 FetchStrategy 时,延迟仍然存在,但时间从花在序列化上转移到花在查询上(即加载导航属性)。

所以问题不在于序列化,而在于优化数据检索。

0 投票
1 回答
92 浏览

c# - Telerik DataAccess (OpenAccess) 可为空的外键性能

我们正在向使用 Telerik DataAccess ORM 的人寻求帮助。最近,我们遇到了一个可空外键的大性能问题。

当我们为可为空的 int 外键属性(没有 SaveChanges)赋值时,Telerik 会多次调用数据库并做一些奇怪的工作。我们使用dotTrace,发现有很多SQL DataReader调用和一些奇怪的string/DateTime/Enum/...转换器。仅当我们为属性设置值时才会出现此问题,get 工作正常。

一点关于我们的环境。我们试图创建一个空的控制台应用程序。调用了相同的奇怪代码,但在本地环境中要快得多 - 小型实体和本地数据库约为 60 毫秒。对于大型实体,它大约是 1.5 秒,但在我们使用 Azure Sql DB 的生产服务器中 - 它是从 10 到 50 秒

备注:我们尝试直接加载和设置对象,不使用外键,它没有帮助。

在这里您可以找到 dotTrace 调用堆栈。

0 投票
1 回答
162 浏览

asp.net-mvc - 使用 Telerik Open Access 时如何修复“多线程”和“不允许新事务”错误?

我们有一个使用 Telerik Open Access 的 asp.net MVC 应用程序。一旦我们将数据投入生产,我们就会遇到各种各样的问题。Telerik 不再支持 Open Access,因此我们无法从他们那里获得任何帮助,但我们应该立即上线,并且现在没有预算的时间来更改。有人可以就如何解决这些问题给我一些建议吗?

我们在更新和插入记录时遇到了同样的错误,但这些问题并不总是发生。在我的计算机上从 Visual Studio 运行解决方案或将项目部署到我们的测试服务器后,我从来没有遇到这些错误。在生产服务器上,当多个用户使用该应用程序时,我们开始看到错误。

示例代码将是这个插入函数:

和这个更新功能:

在这两种情况下,这些方法都在一个名为 Repository 的类中。为这个类定义了一个私有变量(KOpenAccessContext 是项目中定义的类,实现了一个 OpenAccessContext 类):

然后在 Repository 构造函数中,将该私有变量分配给新的 KOpenAccessContext:

我们收到的错误消息是

Telerik.OpenAccess.Exceptions.DataStoreException:Telerik.OpenAccess.RT.sql.SQLException:不允许新事务,因为会话中正在运行其他线程。

[InvalidOperationException:无法启动第二个事务]

第一个是最常见的。

这篇文章:来自实体框架的 SqlException - 不允许新事务,因为会话中还有其他线程正在运行。表明问题出在 for 循环中的保存,但事实并非如此。

第三个答案建议将代码放在使用事务和使用上下文块中;我收到此错误:

Telerik.OpenAccess.OpenAccessException:System.InvalidOperationException:此 SqlTransaction 已完成;它不再可用。

我发现这篇文章:http ://www.telerik.com/forums/how-do-i-fix-a-new-transaction-is-not-allowed-error-is-telerik-open-access#swcnW_tPGEWglUih1TEAKg建议我创建“使用短暂的上下文实例”。对我来说,这意味着创建一个新的开放获取。我试过了,但仍然出现“不允许新交易”错误:

我真的很茫然,我有一个客户和老板向我寻求解决方案。我很想知道造成这种情况的原因(认为可能是因为有多个用户),但我真正需要的是一个解决方案。我怎样才能解决这个问题?

0 投票
0 回答
351 浏览

c# - 无法加载 DLL 'oasoa.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

我安装了OpenAccess服务器sdk,然后编译了示例代码oanet.csproj,当我尝试运行这个项目的.exe文件时,在运行时它显示错误“0x8007007E”,所以我知道oasoa.dll的依赖项是丢失,因此在 DEPENDENCY WALKER 工具的帮助下,我发现缺少许多依赖项,如下图所示, 在此处输入图像描述

现在的问题是oasoa.dll依赖文件的数量太多了,我还是下载了很多并尝试减少问题,但是我无法找到所有特定版本的文件,我也安装了所有C++ 可再发行包正确,那么我现在该怎么办?请帮忙。

0 投票
1 回答
45 浏览

telerik - 在出现异常时在 OpenAccessContext 中获取修改后的实体

我知道我们可以通过以下命令访问 OpenAccessContext 中的新/修改/删除实体。

dbContext.GetChanges().GetInserts<object>() dbContext.GetChanges().GetUpdates<object>() dbContext.GetChanges().GetDeletes<object>()

如果在执行 SaveChanges() 时由于任何原因发生异常,我需要记录这些实体,但在出现异常时它们会被清除。

无论如何,如果出现异常,是否可以将实体从 OpenAccessContext 中取出?