[英]DataGridView is editable but does not send changes back to database using Entity Framework
我已將我的DataGridView
綁定到我的ComboBox
以便無論在ComboBox
選擇什么值,SID 和 Mark 的相應值都將出現在DataGridView
。 當我這樣做時, DataGridView
是可編輯的,但輸入時數據不會保存在數據庫中。 有沒有辦法更新它? 如果有另一種方法,我必須首先警告我只需要DataGridView
中的 SID 和 Mark,如果我嘗試將整個“Student_Course”表綁定到DataGridView
我會得到我不需要的其他列。
private void cboeCID_SelectedIndexChanged_1(object sender, EventArgs e)
{
var CID = Convert.ToInt32(cboeCID.Text);
using (var db = new Entities2())
{
var course = from c in db.Student_Course
where c.CID == CID
select new Class1
{
SID = c.SID,
Mark = c.Mark
};
editDataGridView.DataSource = course.ToList();
Validate();
editDataGridView.EndEdit();
editDataGridView.Update();
}
}
class Class1
{
public int SID { get; set; }
public int Mark { get; set; }
}
上面的代碼有一些重要的問題:
您將查詢結果整形為自定義Class1
,這不是您的實體類型。
您在DbContext
另一個不知道更改的實例上調用了SaveChanges
,因此沒有任何反應。
要解決上述問題,請考慮以下提示:
db
作為Form
一個字段,並在Form
Load
事件中實例化它,並將其用於加載和保存數據。您可以通過以下方式加載數據實體:
db = new Entities2(); db.Student_Course.Where(x => c.CID== CID).ToList(); editDataGridView.DataSource = db.Student_Course.Local;
您可以通過以下方式保存數據:
editDataGridView.EndEdit(); db.SaveChanges();
如果您需要使用與實體不同的視圖模型進行編輯,則在保存更改時,您應該首先使用上下文的另一個實例從數據庫加載原始實體,然后為每個實體設置已更改字段的值,然后調用SaveChanges
方法。
有關更多信息,請查看以下資源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.