代码:
var viewModel = new netsecreContext();
viewModel.Devies=db.Devies;
foreach (Devie d in viewModel.Devies)
{
SimpleSnmp snmp = new SimpleSnmp(d.MsgHostname, d.device_comm);
Dictionary<Oid, AsnType> result = snmp.Get(SnmpVersion.Ver1,
new string[] { ".1.3.6.1.2.1.1.1.0" });
foreach (KeyValuePair<Oid, AsnType> kvp in result)
{
d.device_ios = kvp.Value.ToString();
}
if (ModelState.IsValid)
{
db.Entry(db.Devies).State = EntityState.Modified;
db.SaveChanges();
}
}
return RedirectToAction("Index");
我想通过遍历device表,读取每台设备的OID信息,并将从设备读取到的IOS信息,更新到的device表中的device_ios字段,但是这个代码在作更新施出错,提示:
The entity type DbSet`1 is not part of the model for the current context.
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
请教该如何修改。
不明白,已经跟踪到了 为什么要加db.Entry(db.Devies).State = EntityState.Modified; 这句。
不明白,db.SaveChanges(); 为什么不放在最外面。
写的有点繁复
db.Devies 是个DBSet 啊, 应该是
db.Entry(d).State = EntityState.Modified;
db.SaveChanges();