C# 对于EF 6导航属性,是否建议使用实现IListSource的ObservableCollection?

C# 对于EF 6导航属性,是否建议使用实现IListSource的ObservableCollection?,c#,winforms,entity-framework,datagridview,C#,Winforms,Entity Framework,Datagridview,我刚刚开始使用Entity Framework,我正在针对.Net 4.5.2的Windows窗体应用程序中使用EF 6.1.3(没有特别的原因说明它不能是更高版本的.Net) 我想将数据绑定到Windows窗体DataGridView,我在MSDN上找到了此演练。该页面上一次更新是在2016年10月,但似乎较旧(这意味着Visual Studio 2013是最新版本) 该页面建议创建一个observeListSource类,该类继承自observeableCollection并实现IListS

我刚刚开始使用Entity Framework,我正在针对.Net 4.5.2的Windows窗体应用程序中使用EF 6.1.3(没有特别的原因说明它不能是更高版本的.Net)

我想将数据绑定到Windows窗体
DataGridView
,我在MSDN上找到了此演练。该页面上一次更新是在2016年10月,但似乎较旧(这意味着Visual Studio 2013是最新版本)

该页面建议创建一个
observeListSource
类,该类继承自
observeableCollection
并实现
IListSource
IListSource.Getlist
实现只返回一个
IList
,该类是通过调用
observeableCollection
上的
ToBindingList
创建的,像这样:

public class ObservableListSource<T> : ObservableCollection<T>, IListSource
    where T : class
{
    private IBindingList _bindingList;

    bool IListSource.ContainsListCollection { get { return false; } }

    IList IListSource.GetList()
    {
        return _bindingList ?? (_bindingList = this.ToBindingList());
    }
}
public class Category
{
    private readonly ObservableListSource<Product> _products =
            new ObservableListSource<Product>();

    public int CategoryId { get; set; }
    public string Name { get; set; }
    public virtual ObservableListSource<Product> Products { get { return _products; } }
}
当我的导航属性声明为
IList
时,我的
DataGridView
似乎正在工作,但可能我还没有测试所有方面。我的问题是在EF 6/.Net 4.5中,导航属性的类型是实现
IListSource
ObservableCollection
还是早期版本中需要的解决方法


我意识到我可以继续创建
observeListSource
类,并将其用于我的所有导航属性,但我不想用一些不必要的东西(可能会导致问题)使我的代码复杂化。

无法相信我在那里读到的内容。就像DAL的唯一任务是将实体绑定到DGV一样。即使是今天,也不会是明天。松耦合是稳定软件的关键。除非它是一个范围狭窄、寿命短暂的应用程序,否则甚至不要将实体绑定到UI。使用视图模型。@GertArnold我可以理解为什么这样做是有意义的,但是使用视图模型解决了
ObservableListSource
类试图解决的一些问题,或者这个问题已经解决了吗?