实体框架不保存更新

时间:2015-05-13 11:20:28

标签: asp.net-mvc entity-framework c#-2.0

我试图只更新表中给定数量的列(因为所有列都不需要每次都更新)。

所以我想知道如何使用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();

3 个答案:

答案 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();
}

在这种情况下,请勿致电AddObjectChangeObjectState

答案 2 :(得分:0)

在这种情况下,无需使用 AddObject ChangeObjectState 来更新表格。

对象上下文中的

对象附加由该对象上下文管理。更新现有实体的步骤非常简单。首先从 EntitySet (在我们的示例中为ObjectSet)中检索实体的实例,然后编辑实体的属性,最后在上下文中调用SaveChanges()。

personName