我正在尝试使用实体框架将数据保存到SQL Server表中。我正在使用数据库优先方法。但是我继续收到user_id
为null的错误,但是我已经在代码中将其分配了:
无法将值NULL插入表'dbo.Users'的'user_id'列中;列不允许为空。 INSERT失败。
该声明已终止。
这是我的代码:
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; }
}
谢谢。
答案 0 :(得分:0)
如果没有用户,则user_id将返回null,因此无法插入新用户。这不是获取唯一ID的正确方法。请参阅@Jeroen Mostert的评论
答案 1 :(得分:0)
public partial class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int user_id { get; set; }
public string username { get; set; }
public Nullable<System.DateTime> Date_Captured { get; set; }
}
public ActionResult SaveUser(User user)
{
using (DBEntities entities = new DBEntities())
{ // dont set Id
entities.Users.Add(user);
entities.SaveChanges();
return RedirectToAction("Index", "Users");
}
}