【发布时间】:2021-02-08 16:50:57
【问题描述】:
我正在尝试使用实体框架将数据保存到 SQL Server 表中。我正在使用数据库优先方法。但是我不断收到user_id 为空的错误,但我已经在代码中分配了它:
无法将值 NULL 插入列“user_id”、表“dbo.Users”;列不允许空值。插入失败。
声明已终止。
这是我的代码:
public ActionResult SaveUser(User user)
{
using (DBEntities entities = new DBEntities())
{
int maxUserId = entities.Users
.Select(u => u.user_id)
.DefaultIfEmpty(0)
.Max();
user.user_id = maxUserId + 1;
entities.Users.Add(user);
entities.SaveChanges();
return RedirectToAction("Index", "Users");
}
}
用户类:
public partial class User
{
public int user_id { get; set; }
public string username { get; set; }
public Nullable<System.DateTime> Date_Captured { get; set; }
}
谢谢。
【问题讨论】:
-
即使这样可行,这也不是获取唯一 ID 的正确方法。如果多个请求大致同时到达,这是不安全的。在服务器端使用
IDENTITY列或显式SEQUENCE。
标签: c# sql-server asp.net-mvc-5 entity-framework-6