我已经生成了一个介于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);
}
答案 0 :(得分:5)
必须将新创建的对象按DbSet
添加到EF
中,以检测是否已创建新对象。
var client = new Client()
{
Token = ViewBag.rndNumber,
};
db.Clients.Add(client);
db.SaveChanges();
如果您想更新现有客户端
clients.Token = randomNumber
db.SaveChanges();
注意事项clients
实际上是单一实体,因为Find
与SingleOrDefault
相同,所以只是误导名称