4

我一直在尝试使用 C# 和 DevExpress,遇到了一种我找不到简单解决方案的情况。

我有三个对象:

  • 作者
  • 系列

 

  1. ABookAuthors 的集合(多对多)
  2. AnAuthor有一个Books 集合(多对多)
  3. ASeries有两个集合;BooksAuthors
  4. 两者Book都有Author一个Series集合

我的问题是,每当我将 a 添加Book到 aSeries时,它的Author(s)Book也应该添加到Series.

[Association("SeriesBooks")]
public XPCollection<Book> Books => GetCollection<Book>(nameof(Books));

[Association("SeriesAuthors")]
public XPCollection<Author> Authors
{
    get { return GetCollection<Author>("Authors"); }
}

我考虑了以下几点:

  • 使用OnSaving事件
  • 在我的关联中添加一个 setter
  • 使用AfterConstruction

但是由于我是初学者,因此我实际上无法从中得到任何东西。

我会很高兴你能提供的所有帮助。

4

1 回答 1

3

对 DevExpress 没有任何经验,但如果你真的想要系列课程中的作者的道具,我会创建一个只读道具,从书籍列表中读取作者。就像是:

public List<Author> Authors { 
        get {
            Books.SelectMany(x => x.Authors).ToList();
        } 
    }

它将消除维护单独的作者列表所涉及的工作。对系列中包含的任何书籍的任何更改,包括添加和删除书籍本身,或对书籍作者的任何更改,都将自动反映在系列中,无需任何其他代码。

于 2019-10-02T08:13:51.827 回答