实体框架加载和本地获取ObservableCollection
本文关键字:获取 ObservableCollection 框架 加载 实体 | 更新日期: 2023-09-27 17:51:14
我无法获得更新的结果并将其显示到datagrid,这是我的代码:
Xaml:<Button Content="Button"
Click="Button_Click"
Margin="0,90,0,116" />
<DataGrid x:Name="manPowerOrgDataGrid"
ItemsSource="{Binding}"
Margin="0,0,0,184">
</DataGrid>
我使用Load方法和Local属性来获得一个ObservableCollection:
public Window1()
{
InitializeComponent();
using (DesignerEntities db=new DesignerEntities())
{
db.ManPowerOrgs.Load();
DataContext = db.ManPowerOrgs.Local;
}
}
保存更改并刷新:
private void Button_Click(object sender, RoutedEventArgs e)
{
using (DesignerEntities db=new DesignerEntities())
{
db.ManPowerOrgs.Add(new ManPowerOrg() { Caption = "A", Number = 1, SMonth = 100 });
db.SaveChanges();
manPowerOrgDataGrid.Items.Refresh();
}
}
但是更新的结果不会显示在我的UI上!
我建议不要直接绑定到DbSet。使用ObservableCollection可能更合适。
例如:public ObservableCollection<ManPowerOrg> MyList = new ObservableCollection<ManPowerOrg>();
public Window1()
{
InitializeComponent();
using (DesignerEntities db = new DesignerEntities())
{
foreach (var item in db.ManPowerOrgs.ToList())
{
MyList.Add(item);
}
}
DataContext = this;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
using (DesignerEntities db = new DesignerEntities())
{
ManPowerOrg myItem = new ManPowerOrg() {Caption = "A", Number = 1, SMonth = 100};
db.ManPowerOrgs.Add(myItem);
db.SaveChanges();
MyList.Add(myItem);
}
}
然后别忘了修改绑定:
<DataGrid x:Name="manPowerOrgDataGrid"
ItemsSource="{Binding MyList}"
Margin="0,0,0,184">