Производительность EF6 и WPF. Как исключить записи из ICollection, ведь они не соответствуют требованиям и не используются в подробных таблицах данных? - PullRequest
0 голосов
/ 15 ноября 2018

будет использовать их структуру для составления моего вопроса:

public class Blog
{  
    public int BlogId { get; set; }  
    public string Name { get; set; }  
    public string Url { get; set; }  
    public string Tags { get; set; }  
    public ICollection<Post> Posts { get; set; }  
}
public class Post
{  
    public int PostId { get; set; }  
    public string Name { get; set; }  
    public bool IsDeleted { get; set;}
}

Цель: использование сущностей и их отношений для получения списка блогов. Мне нужно отфильтровать их перед тем, как показывать их пользователю, а также нужно иметь сообщения определенного типа (например, ведьмы не удаляются), и мне нужно иметь отфильтрованная коллекция при загрузке модели.

Я пытаюсь поместить свой список в качестве ItemSource подробной сетки в Devexpress, а Details - это связанная коллекция сообщений.

Вот моя сторона ViewModel:

ObservableCollection<Blog> BlogsList = new ObservableCollection<Blog>();
var qry = modelContext.Blogs.Select(x => x);
BlogsList = new ObservableCollection<Blog>(qry);

А вот здесь - вид сбоку (здесь я пытаюсь показать все блоги и только не удаленные сообщения:

<dxg:GridControl
                    AutoPopulateColumns="False"
                    ItemsSource="{Binding Path=BlogsList}">
                    <dxg:GridControl.DetailDescriptor>
                        <dxg:DataControlDetailDescriptor
                            ItemsSourceBinding="{Binding Posts}"
                            ShowHeader="False">
                            <dxg:GridControl>
                                <dxg:GridControl.View>
                                    <dxg:TableView
                                    </dxg:TableView>
                                </dxg:GridControl.View>
                                <dxg:GridControl.Columns>
                                    <dxg:GridColumn
                                        Width="150"
                                        FieldName="Post.Name"
                                        Header="Vardas"
                                        ReadOnly="True" />
                                </dxg:GridControl.Columns>
                            </dxg:GridControl>
                        </dxg:DataControlDetailDescriptor>
                    </dxg:GridControl.DetailDescriptor>
                    <dxg:GridControl.View>
                        <dxg:TableView
                            Name="Blogs"
                            AllowBestFit="True"
                            AllowGrouping="False"
                            AllowPerPixelScrolling="True"
                            AutoWidth="True"
                            NavigationStyle="Cell"
                        </dxg:TableView>
                    </dxg:GridControl.View>
                    <dxg:GridControl.Columns>
                        <dxg:GridColumn
                            FieldName="Name"/>
                        <dxg:GridColumn
                            FieldName="Url"/>
                            Visible="True" />
                    </dxg:GridControl.Columns>
                </dxg:GridControl>
...