當我單擊表單中的按鈕時,會創建一個新成員。 具有屬性的此新成員作爲參數傳遞給數據庫類 UpdateMember方法。context.SaveChanges()不會工作
在UpdateMember方法存在用於具有相同ID,然後在那個地方的部件的部件被替換爲在參數中傳遞的構件的搜索。
現在的問題是,成員名單現已更新,但context.SaveChanges不同意我的意見(它不更新數據庫)。
這是形式的代碼: db是DB類
private void updateMember()
{
Member mbr = new Member();
mbr.membernr = int.Parse(nr.Text);
mbr.firstname = fName.Text;
mbr.lastname = lName.Text;
mbr.birthdate = Convert.ToDateTime(bDay.Text);
mbr.gender = gender.Text;
mbr.paid = int.Parse(paid.Text);
db.UpdateMember(mbr);
}
這的實例數據庫類
class Db
{
private SportDBEntities context;
private static Db db;
private List<Member> members;
private Db() {
context = new SportDBEntities();
}
public static Db GetInstance() {
if (db == null) {
db = new Db();
}
return db;
}
public List<Member> GetMembers() {
members = new List<Member>();
GetMembersFromDb();
return members;
}
private void GetMembersFromDb() {
var query = context.Members;
foreach (Member m in query) {
members.Add(m);
}
}
public Member GetMemberAt(int index)
{
return members[index];
}
public void UpdateMember(Member mbr)
{
for (int i = 0; i < members.Count; i++)
{
if (members[i].membernr==mbr.membernr) {
members[i] = mbr;
}
}
context.SaveChanges();
}
}
也許在'GetMembersFromDb()'方法中。您可以將斷點設置爲'query'並重試 –
已經嘗試過。如果我記錄什麼context.SaveChanges它返回0.零意味着顯然沒有改變。 –
這很可能是因爲上下文不知道對象的狀態已更改 - 可能仍然設置爲「未更改」。考慮下面這行代碼讓你的上下文知道對象已經改變了:'context.Entry(/ *你的對象在這裏* /)。State = EntityState.Modified;'你可以在這裏閱讀:https://msdn.microsoft .com/en-us/library/system.data.entitystate(v = vs.110).aspx –