1

替代文字 http://img29.imageshack.us/img29/825/simplemodel.jpg

从上面你可以看出,它是 RDBMS 中表的一种子类(在这种情况下,我最喜欢:MySQL),所以我使用 Visual Subclassing 处理它,它是 tb_order_base 的基本表单,带有验证字段数据等。

这样,我就没有重复代码和其他一些麻烦的问题了,嗯,这似乎是一个真正的 OO 方法。但 ...

现在,当我发布 tb_order_base 数据集而不是 Delphi 首先发布它并从 RDBMS 获取 PK ID,然后发布填充了 id 的 TB_ORDER_PRODUCT 时,我遇到了一个子类形式的大问题,即 tb_order_service 与主/详细方法,它会相反,先发布详细的 tb_order_product 数据集,然后再发布主 tb_order_base,所以我得到了一个很大的外键约束错误。

有谁知道如何绕过这个惊人的问题?

我之前问过它,但在主/细节行为中几乎没有细节

4

1 回答 1

2

在这种情况下,我所做的一件事是摆脱 DBMS 直接调用,而是为表单使用内存数据集(或客户端数据集)。当用户按下保存按钮时,我会验证我的编辑并返回任何错误。如果没有错误,那么我将开始一个数据库事务,提交主记录(然后如果它是插入则读回主记录密钥),然后通过每个提交子记录的表运行,然后提交事务(或回滚如果保存子数据有任何问题)。

我也远离使用数据感知组件。它们非常适合简单的实用程序类型程序,但是当您开始使用它们创建复杂系统时,您会发现沿途的小问题很容易通过使用标准编辑和将数据推入/拉出数据库的功能来解决。我通常做的唯一例外是网格,但我只使用网格进行选择......实际编辑是使用非数据感知组件完成的。

于 2009-06-22T16:06:15.540 回答