无法从Controller中随机生成的int写入DB

时间:2018-03-06 07:21:36

标签: c# asp.net asp.net-mvc

我已经生成了一个介于100000和999999之间的随机int,并且想要动态地将它写入我的数据库(下面的代码)。我正在加载现有记录(客户端),并希望将randomNumber写入现有记录的字段令牌。

int生成正常,因为我可以存储在ViewBag中并在我的视图中呈现,但由于未知原因无法写入数据库。构建期间没有错误,我的数据库和模型中存在Token

我也试过使用Token = randomNumber.ToString();但没有成功。

控制器:

public ActionResult SendForm(int ? id)
{            
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }

    Client clients = db.Clients.Find(id);
    if (clients == null)
    {
        return HttpNotFound();
    }
    Random rndNumber = new Random();
    int randomNumber = rndNumber.Next(100000,999999);
    ViewBag.rndNumber = randomNumber.ToString();
    var client = new Client()
    {
       Token = ViewBag.rndNumber,
    };
    db.SaveChanges();
    return View(clients);
}

1 个答案:

答案 0 :(得分:5)

必须将新创建的对象按DbSet添加到EF中,以检测是否已创建新对象。

var client = new Client()
{
    Token = ViewBag.rndNumber,
};
db.Clients.Add(client);
db.SaveChanges();

如果您想更新现有客户端

clients.Token = randomNumber
db.SaveChanges();

注意事项clients实际上是单一实体,因为FindSingleOrDefault相同,所以只是误导名称