gpt4 book ai didi

c# - ObservableCollection 优于 ObjectSet

转载 作者:太空狗 更新时间:2023-10-29 22:05:51 31 4
gpt4 key购买 nike

为什么(在 WPF、C#、 Entity Framework 中)将 ListBox 绑定(bind)到在 ObjectSet 上创建的 ObservableCollection(来自 Entity框架)而不是直接绑定(bind)到 ObjectSet

还有一个问题:当我将 ListBox 绑定(bind)到 ObservableCollection 时,对集合的任何添加都会更新 ListBox。伟大的。但是 ObservableCollection 是在 ObjectContext 上创建的(在 Entity Framework 中),向集合中添加新项目不会将项目添加到上下文中……如何解决这个问题? ???

最佳答案

(注意你的“再问一个问题”点)

Entity Framework 4.1 提供了一个在 WPF 应用程序中特别有用的新功能 - 对象上下文的本地 View 。它可以通过 Local 获得。 DbSet<T>的属性(property). Local返回 ObservableCollection<T>包含 T 类型的所有实体当前附加到上下文(而不是状态 Deleted )。

Local很有用,因为它会自动与对象上下文保持同步。例如:您可以运行查询以将对象加载到上下文中......

dbContext.Customers.Where(c => c.Country == "Alice's Wonderland").Load();

... 然后将上下文中的对象公开为 ObservableCollection ...

ObservableCollection<Customer> items = dbContext.Customers.Local;

... 并将其用作 ItemsSource一些 WPF ItemsControl。当您将对象添加到此集合或从中删除对象时 ...

items.Add(newCustomer);
items.Remove(oldCustomer);

...它们会自动添加到 EF 上下文中/从中删除。打电话SaveChanges会将对象插入/从数据库中删除。

同样在上下文中添加或删除对象......

dbContext.Customers.Add(newCustomer);
dbContext.Customers.Remove(oldCustomer);

... 自动更新 Local收集并因此触发 WPF 绑定(bind)引擎更新 UI 的通知。

Here是关于 Local 的概述在 EF 4.1 中。

关于c# - ObservableCollection 优于 ObjectSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193625/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com