我试图只更新表中给定数量的列(因为所有列都不需要每次都更新)。
所以我想知道如何使用MVC实体框架。
我已尝试过以下内容,我只想更新主题标题和说明。这可能吗? 目前这不是保存更改。
var subjectInfo = db.subjects_tbl.SingleOrDefault(sub => sub.subject_id == model.subject_id);
subjectInfo.subject_title = model.subject_title;
subjectInfo.subject_description = model.subject_description
db.subjects_tbl.AddObject(subjectInfo);
db.SaveChanges();
答案 0 :(得分:0)
您需要更改subjectInfo
db.ObjectStateManager.ChangeObjectState(subjectInfo,EntityState.Modified);
请勿使用addObject
。将您的代码更改为
var subjectInfo = db.subjects_tbl.SingleOrDefault(sub => sub.subject_id == model.subject_id);
subjectInfo.subject_title = model.subject_title;
subjectInfo.subject_description = model.subject_description
db.ObjectStateManager.ChangeObjectState(subjectInfo,EntityState.Modified);
db.SaveChanges();
答案 1 :(得分:0)
足以修改所需的属性并调用SaveChanges
:
var subjectInfo = db.subjects_tbl.SingleOrDefault(sub => sub.subject_id == model.subject_id);
if(subjectInfo != null) {
subjectInfo.subject_title = model.subject_title;
subjectInfo.subject_description = model.subject_description;
db.SaveChanges();
}
在这种情况下,请勿致电AddObject
或ChangeObjectState
。
答案 2 :(得分:0)
在这种情况下,无需使用 AddObject 或 ChangeObjectState 来更新表格。
对象上下文中的对象附加由该对象上下文管理。更新现有实体的步骤非常简单。首先从 EntitySet (在我们的示例中为ObjectSet)中检索实体的实例,然后编辑实体的属性,最后在上下文中调用SaveChanges()。
personName