我使用xtragrid来保存,加载和修改数据。现在切换到EF5后,它只是不起作用。尝试将我的代码更改为local
和tobindinglist
,但数据库中没有任何更改。有什么建议吗?
public partial class formKonstruksiyon : Form
{
public Tank_Analizor_DBEntities db;
public formKonstruksiyon()
{
InitializeComponent();
db = new Tank_Analizor_DBEntities();
}
private void formKonstruksiyon_Load(object sender, EventArgs e)
{
konstruksiyonBindingSource.DataSource = db.Konstruksiyon.Local.ToBindingList();
gridControl1.DataSource = konstruksiyonBindingSource.DataSource;
}
private void barButtonItemSave_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
db.SaveChanges();
LibStatic.ShowSuccessMessage();
}
catch (Exception ex)
{
LibStatic.ShowErrorMessage(ex);
}
}
private void silToolStripMenuItem_Click(object sender, EventArgs e)
{
gridView1.DeleteRow(gridView1.FocusedRowHandle);
}
}
更改后的一些更新:
konstruksiyonBindingSource.DataSource = db.Konstruksiyon.ToList();
private void barButtonItemSave_ItemClick(object sender,
DevExpress.XtraBars.ItemClickEventArgs e)
{
LibStatic.GridPostPendingRow(gridView1);
try
{
konstruksiyonBindingSource.DataSource = db.Konstruksiyon.Local.ToBindingList();
db.SaveChanges();
LibStatic.ShowSuccessMessage();
}
catch (Exception ex)
{
LibStatic.ShowErrorMessage(ex);
}
}
它有点保存:如果我只添加一个条目,它就不会保存,但如果我添加两个条目,它就会保存。怎么可能呢?
答案 0 :(得分:0)
您应该将实体添加到您的上下文中,或者如果您正在执行更新,请附加实体并将State属性设置为已修改:
答案 1 :(得分:0)
尝试将数据源设为ObservableCollection,而不是列表:
konstruksiyonBindingSource.DataSource = db.Konstruksiyon.Local;
知道 时发生的变化,因此应该更适合更改跟踪