【问题标题】:XAF/XPO How to integrate legacy databaseXAF/XPO 如何集成遗留数据库
【发布时间】:2014-01-06 00:07:46
【问题描述】:

我们正在试验 DevExpress XAF 和 XPO,以便将其用于我们进一步开发现有的小型企业 ERP 系统。我们有一个 SQL 数据库,不能更改现有表。我们正在尝试做的是仅将新的所需表属性添加到新表中,然后应该通过对象继承“连接”到旧表(MapInheritanceType.OwnTable)。

例如:

我们有一个旧版 tCustomer 表。现在我们添加一个 XPO 对象 tCustomerExtended 像

public class tCustomerExtended : test.Module.BusinessObjects.db.tCustomer ...

tCustomerExtended 类随后应使用新属性进行扩展,tCustomer 类保持不变(以便旧客户端应用程序使用)。

这当然可以。使用主键 kCustomer(遗留表的键)生成一个新表 tCustomerExtended。 XAF 还按预期生成 UI:tCustomerExtended 视图是空的,因为它显示了 tCustomerExtended 条目。

!!!但我们真正想要实现的是在此视图中显示所有现有的tCustomer 条目以及tCustomerExtended 的新属性。然后 OnSaving 方法应将旧属性保存到 tCustomer 并将新属性保存到 tCustomerExtended。我们还必须生成一个 kCustomer 密钥,因为旧的 tCustomer 表 kCustomer PK 没有身份规范。

目前我不知道如何在不更改旧的tCustomer 的情况下实现这一点(绝对不允许这样做)。

【问题讨论】:

    标签: c# devexpress xpo xaf


    【解决方案1】:

    默认情况下,当您创建子类tCustomerExtended 时,XAF 应该生成详细视图,其中包含所有tCustomer 属性。我不确定你为什么没有看到这种行为。

    不能只向旧的tCustomer 表添加新列。只要您不更改任何现有列,您的旧系统就应该继续工作。如果tCustomer 表中有额外的列,您的旧系统是否会中断?如果只允许进行最小的更改,您可以使用[ExpandObjectMembers] 创建一个[Aggregated] 属性。这将向旧的tCustomers 表添加一列,该表将提供所有扩展属性的链接。

    如果您确实需要两个对tCustomer 进行零更改的表,那么我认为您需要跳过一些障碍才能完全实现您想要的。这当然是可能的,但最好的答案将来自the DevExpress support center(对于所有与 DevExpress 相关的问题)。如果您在此处发布示例项目,DevExpress 团队将迅速为您提供适合您情况的最佳方法。

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多