问题标签 [xpo]
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.
c# - 对 DevExpress XPO ORM 包有任何想法吗?
XPO是我公司首选的对象关系映射器。关于利弊的任何想法?
我只是在寻找有关该产品的一般感觉和轶事。我们不会切换到 XPO。我们只是摆脱了应用程序中的硬编码 sql 字符串,并完全转移到 ORM 以进行所有数据访问。
.net - 如何将持久对象数据绑定到 DataLayoutControl(DevExpress 工具)?
我有一个显示 DataLayoutControl 组件的小表单。
如果我使用 GridControl 对象会被保存。如果我使用 DataLayoutControl (单独显示它们),它们在更改后不会被保存。用户界面编辑后,基础对象会更改,但不会保存。
我怎样才能启用它?
PS:我试过 UnitOfWork.CommitChanges (我有一个 uow 遍历整个架构)无济于事。
devexpress - DevExpress eXpressApp Framework (XAF) 和 eXpress Persistent Objects (XPO):如何加快关联的加载时间?
我在访问具有大量记录的关联属性时遇到了问题。
我有一个 XAF 应用程序,其父类名为MyParent
.
中有 230 条记录MyParent
。
MyParent
有一个名为MyChild
.
中有 49,000 条记录MyChild
。
我在标准方式MyParent
之间定义了一个关联:MyChild
在MyChild
:
并在MyParent
:
有一个特定的MyParent
记录叫做MyParent1
.
对于MyParent1
,有 630MyChild
条记录。
我有一个名为MyUI
.
用户在 DetailView 的一个下拉列表中选择一个项目MyUI
,而我的代码必须用对象填充另一个下拉列表MyChild
。
用户MyParent1
在第一个下拉菜单中进行选择。
我创建了一个属性MyUI
来返回MyChild
第一个下拉列表中所选值的对象集合。
这是该属性的代码:
DisplayedValues
我将该属性标记为,NonPersistent
因为它只需要 DetailVIew 的 UI。我不认为第一次持久化它会加快集合的创建,在它用于填充下拉列表之后,我不需要它,所以我不想花时间存储它。
问题是调用需要 45 秒theParentValue = this.DropDownOne
。
眼镜:
- 远景商务
- 8 GB 内存
- 2.33 GHz E6550 处理器
- SQL Server 速成版 2005
这对于用户来说等待 DetailView 中的许多下拉菜单之一太长了。
我花时间草拟商业案例,因为我有两个问题:
如何使关联的值加载更快?
是否有另一种(简单)方法可以对运行速度更快的下拉菜单和 DetailView 进行编程?
是的,您可以说 630 项太多,无法在下拉列表中显示,但是这段代码需要很长时间,我怀疑速度与 49,000 成正比,而不是与 630 成正比。下拉列表中的 100 项将我的应用程序不会太多。
我的应用程序中需要很多这样的下拉菜单,因此不适合强制用户为每个下拉菜单输入更复杂的过滤条件。用户需要选择一个值并查看相关值。
如果查找大量记录很慢,我会理解,但查找几百条记录不应该花那么长时间。
linq-to-sql - 从 XPO 迁移到 LINQ 到 SQL 的提示
我是 DevExpress XPO 库的长期用户。它有很多很棒的功能,但也有一些弱点:
- 保存现有对象时,所有属性都在更新查询中发送;更改是基于每个对象而不是每个属性来跟踪的。
- 乐观锁定是在每个对象的基础上完成的,而不是每列。
- 当发生乐观锁定异常时,不会提供描述冲突性质的上下文;您唯一真正的反应是使操作失败或重现它并在循环中重试。
- LINQ 对 XPQuery 的支持非常弱(至少在我们正在使用的 8.1 中)。因此,您经常被迫使用不是类型安全的 XPView 或 XPCollection,它可能返回您不一定需要的列。
在阅读了 LINQ to SQL 如何实现优化锁定和处理更新冲突之后,我被卖了!我喜欢它如何实现列级乐观锁定并且不需要向表中添加列。能够检查和处理冲突的确切性质是很棒的。他们跟踪每列更改的事实应该使其更新查询更加高效。
当然,我还没有在实际应用中使用过LINQ to SQL,所以我不知道它在现实中的比较。此外,我不清楚它是否具有我们喜欢 XPO 的某些功能的类似物,例如:
- 自动模式更新(我们相信对象设计驱动数据库结构而不是相反,这大大简化了软件部署)
- 如何实现继承的两个选项(同表或一对一的表关系)
- 支持内存存储(尽管我认为我们可以在单元测试中将 LINQ 替换为对象)
- 存储提供程序自定义(允许我们向 XPO 查询添加 NOLOCK 支持)
我们将进行探索性的部分迁移,我们将暂时将两个 ORM 用于代码的不同部分。你们中的任何人都有使用 XPO 和 LINQ to SQL 的实际经验吗?他们在实践中如何比较?具体来说,您是否知道 LINQ to SQL 缺少的任何会为代码迁移带来挑战的功能?
哦,我什至应该关心 LINQ to Entities 吗?它看起来比我们需要的任何东西都要复杂得多。
versioning - 如何跨不同版本保留单个 XPO?
我想要一个 XPO,并且在 AX4 和 AX5 上使用相同的代码。我正在寻找一个预编译器指令来检查版本,有点像:
command-line - 通过命令行导入和编译axapta 2009 xpo
我正在寻找一种通过命令行将现有xpo-export 导入ax2009 aot 的方法,然后只编译这个导入的xpo。google 告诉我如何通过命令行编译整个 aot,这需要很长时间。那么有没有办法导入 xpo(共享项目)并只编译这些对象?
如果应导入的对象由 ax 版本控制并已签入,有哪些可能性?
希望有一种简单的方法来自动化可选地签出、导入、避免覆盖?-问题、编译和运行;)
提前致谢!
devexpress - 在线程之间共享 XPObject 对象
我正在评估 XPO,到目前为止还不错,真的很喜欢。
我有一个后台线程监视一个目录,当它发现一个新文件被添加时,它解析文件名,并将这个对象存储到数据存储中,然后以该对象作为 arg 触发一个事件,我通过 ui 线程处理这个事件调用,并且在 UI 线程上我需要更改 XPObject 的状态,我怎样才能确保线程安全?使用 XPObject 的 Oid 触发事件?并且在 UI 线程上尝试从 db 中获取对象并对其进行处理,如果有数百万个对象,这似乎有点愚蠢。
有什么建议吗?
.net - .NET ORM 更好地支持多线程?
我知道有关 .net ORM 的问题已经被问了数千次,但我想知道哪种 ORM 在多线程环境中易于使用。欢迎商业或免费。
目前,我正在使用 Devexpress 的 XPO,但我觉得在多线程应用程序中使用起来很尴尬。来自一个线程的对象不能被另一个线程共享,要在另一个线程中使用它,我必须使用密钥从 DB 中找到对象,这真的很烦人。即使您锁定了对象的状态,也无法将 DB 对象的状态持久化到 DB。例如,除了创建对象的线程之外,不能从另一个线程调用 Save() 方法。
顺便说一句,我刚刚开始使用 XPO,也许我用错了。
linq - 在 ASP.NET 页面上检索大型动态指定表的最佳策略
寻找一些关于如何优化我们的一个项目的建议。我们有一个 ASP.NET/C# 系统,它从 SQL2008 数据中检索数据并将其呈现在 DevExpress ASPxGridView 上。检索到的数据可以来自多个数据库之一——所有数据库都略有不同,并且会定期添加和删除。向用户呈现实时“公司”列表,并从相应的数据库中检索数据。
目前,正在使用标准 SqlDataSource 和动态创建的 SQL SELECT 语句检索数据。语句中有一些 JOIN 以及可选的 WHERE 约束,它们再次根据数据库和用户的权限级别动态创建。
除了性能之外,所有这些都很棒(老实说!)。当涉及到一些数据库时,有几十万行,并且检索和分页数据非常慢(数据库已经正确索引)。因此,我一直在寻找加快系统速度的方法,似乎可以归结为两种选择:XPO 或 LINQ。
LINQ 似乎是流行的选择,但我不确定使用本质上如此动态的系统来实现它有多容易——我是否需要为 LINQ 可以访问的每个数据库创建“定义”?我也有点不确定是否动态地创建 LINQ 查询,尽管查看一些至少部分似乎可行的示例。
另一方面,XPO 似乎允许我动态创建 XPO 数据源。但是,我找不到太多关于如何加入其他表的信息。
任何人都可以就哪种方法(如果有的话)最好地尝试和改造到这个项目中提供任何建议吗?还是当前使用的动态 SQL 模型与 LINQ 和 XPO 根本不同,最好不要管它?
timer - 通过计时器创建用于修改 XPO 对象的 Web 服务
我有几个创建新对象的客户端。创建新对象时,我需要启动一个计时器,该计时器将在时间过去时更改某些对象属性(每个对象只能在特定时间对已定义的客户端组可见)。我想为此目的使用网络服务并编写了一个启动计时器的方法。
例如,我需要将计时器设置为 5 分钟。执行时间有什么限制吗?计时器会让我的网络服务保持活力吗?