objectcontext&绑定时的dbcontext差异

时间:2014-09-26 19:12:57

标签: c# entity-framework entity-framework-6 ef-database-first

我一直在我的项目中使用ObjectContext,但是现在我尝试使用DbContext,我发现了一些在绑定到数据源时我不明白的差异,例如

使用DbContext

我像这样绑定数据源

DbSet<Client> Clients = ctx.Client;
Clients.Load();
bsClients.DataSource = Clients().Local.ToBindingList();
bsClientPhones.DataSource = ((Client)bsClients.Current).Phone; // this line doesn't work

当我绑定&#34; bsClientPhones&#34;这样,在添加或删除时,网格不会显示更改,直到我保存并重新加载数据。我无法将其转换为Local或Bindinglist。

我不知道这是否是使用DbContext的正确方法 请有人指导我吗?我一直在阅读很多文档,但我输了。

1 个答案:

答案 0 :(得分:0)

您必须在实体级别实现ObservableCollection并为您的网格提供相同的内容。

   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());
        }
    } 

this.categoryBindingSource.DataSource =
                _context.Categories.Local.ToBindingList();

每次更改后,您都需要致电this.categoryDataGridView.Refresh();

以下是我可以使用DataGridView进行的快速演示。这同样适用于GridView for Web表单。

https://github.com/codebased/tm/tree/master/WindowsFormTestConsole