无法向IQueryable添加值(DbContext)

时间:2013-09-15 13:33:03

标签: asp.net asp.net-mvc-4 dbcontext iqueryable

我正在尝试使用MVC4而且我一直试图创建数据。我的代码不会向List添加任何内容。这是我在控制器的HttpPost创建方法

上的代码
Script script = _db.Scripts.Single(d => d.Id == viewModel.ScriptId);
ScriptRequest scriptRequest = new ScriptRequest();
scriptRequest.Username = viewModel.Name;
scriptRequest.RequestedScript = script;
scriptRequest.Parameters = viewModel.OtherParam;
scriptRequest.DateRequested = DateTime.Today;
_db.ScriptRequests.ToList<ScriptRequest>().Add(scriptRequest);
_db.Save();
return RedirectToAction("Index", "Home");

调试时,_db.ScriptRequest中没有添加任何内容。我也尝试过其他方法,比如Concat,但我仍然无法添加一行。这是我对一个扩展DbContext类的类的定义。

public DbSet<ScriptRequest> ScriptRequests { get; set; }

IQueryable<Parameter> IDarylToolDatasource.Parameters
{
     get { return Parameters; }
}

void IDarylToolDatasource.Save()
{
     SaveChanges();
}

1 个答案:

答案 0 :(得分:0)

我认为问题出在这一行:

_db.ScriptRequests.ToList<ScriptRequest>().Add(scriptRequest);

此行中的

.ToList()方法在内存中创建List<ScriptRequest>,在链的下面,将对象添加到内存列表中,而不是dbcontext。

删除.ToList(),问题就会消失