Свойство ассоциации в DomainCollectionView и WCF RIA Services - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть ассоциация в моем классе poco, например:

public class Category() {
    [Key]
    public int id { get; set}
    public string Name { get; set; }
    /* HERE */
    public virtual ICollection<Book> Books {get; set;}
}

public class Book() {
    [Key]
    public int id { get; set}
    public string Name { get; set; }
}

Я использую MVVM patern, MVVM Light и RIA Services Toolkit.Моя реализация службы домена содержит метод GetCategories, который включает их книги, например:

public IQueriable<Category> GetCategories()
{
    return Model.Categories.Include("Books").OrderBy(pCategory => pCategory.Name);
}

В моей модели представления у меня есть DomainCollectionView, который загружает GetGruposQuery.У меня также есть свойство для привязки сетки и других элементов управления, например:

public ICollectionView CollectionViewCategories {
    get { return myDomainCollectionViewCategories;}
}

Мне нужно получить дочернее свойство CollectionView.Books для привязки моих элементов управления и ДОБАВИТЬ, УДАЛИТЬ itens в представлении, но это свойство толькоEntityCollection и не DomainCollectionView, который содержит методы для ADD, REMOVE и т.д.


Я решаю этот вопрос с помощью: (CollectionViewCategories.CurrentItem as Category) .Books.Remove (CollectionViewBooks.CurrentItem as Book)

private ICollectionView CreateView(Object source)
{
    CollectionViewSource cvs = new CollectionViewSource();
    cvs.Source = source;
    return cvs.View;            
}
//...
//After CollectionViewCategories loaded:
CollectionViewCategories.CurrentChanged += (s, e) =>
{
    if (CollectionViewCategories.CurrentItem != null)     
    {
        CollectionViewBooks = CreateView(fContext.Categories.Where(p => p.Id == (CollectionViewCategories.CurrentItem as Category).Id).FirstOrDefault().Books);
    }
    else
    {
        CollectionViewBooks = null;
    }
    RaisePropertyChanged("CollectionViewBooks");
};  

1 Ответ

0 голосов
/ 07 ноября 2011

Зачем тебе это?EntityCollection действительно имеет эти методы (Add, Remove ...)
Если при вызове вы получите ошибку, это может привести к тому, что класс Book не будет полностью доступен клиенту (отсутствие вставки / обновления / удаления)методы в службе домена) Просто для пояснения, DomainCollectionView предназначен для упаковки EntityCollection в первую очередь для лучшей работы с MVVM и связывания в целом (см. эту ссылку )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...