2

我在 XAF 中有一个使用实体框架的主细节场景。我已经Master.Details[Aggregated].

我期望两个功能:

  • 如果删除主对象,则会删除详细对象。
  • 如果一些细节被添加到master,它们应该在master保存时保存。

但不幸的是,它并没有那样做。每次我单击详细信息网格上的新按钮时,它都会创建详细信息并将其保存到数据库中。

我还发现这个老问题(2 年前)说 EF 存在这个问题。 https://www.devexpress.com/Support/Center/Question/Details/Q557784

是否有任何解决方法可以使用 EF 获得真正的构图和掌握细节?

4

2 回答 2

0

我发现 EF 不需要 [Aggregated] 属性

诀窍是在 DBContext OnModelCreating 中设置关系

以销售订单为例

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
        modelBuilder.Entity<Order>().HasMany(x => x.Lines).WithOptional(x => x.Order).WillCascadeOnDelete();
    }

// 我多么希望在这里可以使用 WithRequired,但 XAF 不支持它。

确保 LinkNewObjectToParentImmediately 为真。

 public partial class T474565WindowsFormsApplication : WinApplication {
    public T474565WindowsFormsApplication() {
        InitializeComponent();
      //  LinkNewObjectToParentImmediately = false;
    }

https://www.devexpress.com/Support/Center/Question/Details/T474565

于 2017-01-22T01:08:29.627 回答
0

在 XAF 中,记录不会从数据库中物理删除。相反,它们使用 GCRecord 列标记为已删除。当此字段不为 null时,该行被视为已删除,并且永远不会显示在您的应用程序中。

此外,一旦您实例化一个对象,它就会被保存到数据库中,如果您在调用 CommitChanges 之前将其删除,则它带有非空 GCRecord。

于 2016-07-12T06:23:57.073 回答