尝试使用HTML表单更新MaxInvalidPasswordAttempts的值。当我调试我的代码时,它会显示带有更新值的b.MaxInvalidPasswordAttempts,但是当执行SaveChanges()时没有任何变化
public ActionResult Submit(config asp) {
using(var db=new DB()) {
Operation op = new Operation();
var result = op.Fetch();
foreach (var b in result) {
b.MaxInvalidPasswordAttempts = asp.MaxInvalidPasswordAttempts;
}
try {
db.SaveChanges();
} catch (Exception e) {
return Content(e.Message);
}
}
return RedirectToAction("Index");
}
操作类
public class Operation {
public IEnumerable<config> Fetch() {
using (var db = new DB()) {
var query = from b in db.config
select b;
return query.ToList();
}
}
}
答案 0 :(得分:1)
db.SaveChanges();
完全与Fetch()
即您需要保存相同的上下文或将附加到您正在保存的上下文
例如
public IEnumerable<aspnet_config> Fetch(DB db)
{
var query = from b in db.config
select b;
return query.ToList();
}
更新来自 Tetsuya Yamamoto的评论
从第二个上下文返回
IQueryable
对象并使用db.config.Attach(result
)附加它的方法,然后你可以改变 之后的财产价值
更新2
foreach (var b in result)
{
db.config.Attach(b);